@jaak.ai/file-uploader
Version:
Stencil Component Starter
170 lines (163 loc) • 3.7 kB
CSS
:host {
display: inline-flex;
flex-direction: column;
align-items: center;
height: 100%;
width: 100%;
--background-color: rgba(0, 0, 0, 0.07);
--border-radius: 15px;
--border-width: 3px;
--border-color: #c8c8cb;
--description-font-size: 15px;
--description-color: #87859a;
--button-font-size: 12px;
--button-color: #fff;
--button-border-color: rgba(0, 0, 0, 0.3);
--button-background-color: #202945;
--placeholder-color: rgba(0, 0, 0, 0.3);
--border-style: solid;
--primary-text-color: #202945;
}
.fu-file-input {
position: absolute;
height: 0;
width: 0;
z-index: 0;
opacity: 0;
left: 0;
top: 0;
}
.fu-file-container {
width: 100%;
height: 100%;
box-sizing: border-box;
border-radius: var(--border-radius, 15px);
border-width: var(--border-width, 3px);
border-style: var(--border-style, solid);
border-color: var(--border-color, #c8c8cb);
position: relative;
background-color: var(--background-color, rgba(0, 0, 0, 0.07));
}
.fu-file-container input.fu-file-input {
position: absolute;
height: 100%;
width: 100%;
z-index: 999;
cursor: pointer;
}
.fu-file-container input.fu-file-input::file-selector-button {
cursor: pointer;
}
.fu-file-container img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
object-fit: contain;
border-radius: calc(var(--border-radius, 15px) - var(--border-width, 3px));
}
.fu-file-container video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
object-fit: cover;
border-radius: calc(var(--border-radius, 15px) - var(--border-width, 3px));
}
.fu-file-container .fu-file-placeholder {
position: absolute;
left: 20px;
right: 20px;
top: 45%;
color: var(--placeholder-color, #202945);
text-align: center;
font-weight: bold;
font-size: 20px;
}
.fu-file-container.selected-file input.fu-file-input {
height: 0;
width: 0;
}
.fu-file-container.selected-file .fu-file-placeholder {
display: none;
}
button.fu-file-button {
padding: 8px 16px;
font-size: var(--button-font-size, 12px);
border-radius: 8px;
border-width: 1px;
border-color: var(--button-border-color, rgba(0, 0, 0, 0.3));
color: var(--button-color, #fff);
background-color: var(--button-background-color, #202945);
margin: auto;
cursor: pointer;
}
.fu-file-description {
font-size: var(--description-font-size, 15px);
color: var(--description-color, #87859a);
text-align: center;
}
.fu-file-icon-button {
background: transparent;
border: none;
position: absolute;
right: 4px;
top: 4px;
border-radius: 50%;
cursor: pointer;
width: 20px;
height: 20px;
z-index: 99999;
padding: 0;
}
.icon-close-button {
position: relative;
display: inline-block;
width: 20px;
height: 20px;
overflow: hidden;
cursor: pointer;
}
.icon-close-button:hover::before, .icon-close-button:hover::after {
background: var(--button-background-color, #202945);
}
.icon-close-button::before, .icon-close-button::after {
content: "";
position: absolute;
height: 4px;
width: 100%;
border-radius: 4px;
top: 50%;
left: 0;
margin-top: -1px;
background: #000;
}
.icon-close-button::before {
transform: rotate(45deg);
}
.icon-close-button::after {
transform: rotate(-45deg);
}
.fu-document-preview {
position: absolute;
left: 0;
top: 0;
color: var(--primary-text-color, #202945);
text-align: center;
font-weight: bold;
font-size: 20px;
width: 100%;
height: 100%;
z-index: 999;
background: white;
border-radius: var(--border-radius, 15px);
display: flex;
flex-direction: column;
gap: 8px;
align-items: center;
justify-content: center;
}