savgy
Version:
Get self-contained SVGs or bitmaps from SVG
327 lines (251 loc) • 5.87 kB
CSS
.savgy__wrap {
--brd-rad: 0.3em;
--pdd: 0.3em;
--pdd2: 0.5em;
--bg: #000;
--color-text: #fff;
--color-bg: #000;
--brd: 1px solid var(--color-text);
--fontFamily: sans-serif;
position: relative;
}
.savgy_clone {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
}
/* accessible hidden element */
.savgy__hidden {
position: absolute;
height: 1px;
width: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
}
/*
.savgy__wrap:has(.savgy__preview--visible)>svg {
visibility: hidden
}
*/
.savgy__toolbar {
position: absolute;
bottom: var(--pdd);
right: var(--pdd);
width: 24ch;
font-family: var(--fontFamily);
font-size: 0.9rem;
line-height: 1.2em;
padding: var(--pdd2);
* {
box-sizing: border-box;
font-size: inherit;
font-family: inherit;
}
}
/** align to bottom */
.savgy__toolbar--bottom .savgy__toolbar__inner {
padding-top: 2.5em;
transform: translateY(100%);
}
.savgy__toolbar__inner {
background-color: var(--bg);
border-radius: var(--brd-rad);
color: var(--color-text);
padding: var(--pdd);
visibility: hidden;
transform: translateY(2.25em);
filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.75));
}
.savgy__toolbar__label {
font-weight: 700;
}
.savgy__toolbar__label--inline {
font-weight: 400;
display: inline-block;
}
.savgy__toolbar__toggle__icon,
.savgy__button {
cursor: pointer;
}
/**
* toggle logic
*/
/* icons */
.icn-svg {
display: inline-block;
height: 1em;
color: inherit;
stroke: currentColor;
stroke-width: 0.75rem;
fill: none;
outline: none;
}
.savgy__icon {
transform: translateY(0.1em);
}
/* preview */
.savgy__preview {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit:contain;
object-position:0;
/* filter: grayscale(100%);*/
}
.savgy__preview--hidden {
opacity: 0;
}
.savgy__preview--visible {
opacity: 1;
}
.savgy__toolbar__toggle__label {
filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.75));
background: var(--bg);
height: 2.5em;
aspect-ratio: 1;
display: inline-block;
border-radius: 50%;
text-align: center;
transition: 0.3s transform 0.3s border-radius;
transform-origin: center;
.savgy__icon {
color: #fff;
transform: translateY(0.3em);
}
}
.savgy__toolbar--open .savgy__toolbar__toggle__label {
background: transparent;
border-radius: 0.3em;
transform: scale(0.75);
}
.savgy__toolbar__toggle {
text-align: right;
}
/* display menu */
.savgy__toolbar__toggle__icon--close {
display: none
}
.savgy__icon--download {
display: inline-block;
}
/* .savgy__toolbar:has(.savgy__toolbar__toggle__input:checked) */
.savgy__toolbar--open {
.savgy__toolbar__toggle__icon--close {
display: block;
}
.savgy__toolbar__inner {
visibility: visible
}
.savgy__toolbar__toggle__icon--download {
display: none;
}
}
/*
.savgy__toolbar:has(input:checked) .savgy__toolbar__inner {
display: block;
}
*/
/** loading or ready */
.savgy__button--ready {
.savgy__icon--spinner {
display: none;
}
.savgy__icon--download {
display: inline-block;
}
}
.savgy__button--loading {
.savgy__icon--spinner {
display: inline-block;
}
.savgy__icon--download {
display: none;
}
}
.savgy__toolbar__toggle__icon {
right: 0;
color: var(--color-bg);
font-size: 1.5em;
}
.savgy__toolbar__button,
.savgy__toolbar__select,
.savgy__toolbar__input {
line-height: 1em;
height: min-content;
display: block;
width: 100%;
border: none;
border-radius: var(--brd-rad);
background-color: var(--bg);
color: var(--color-text);
appearance: none;
padding: 0;
}
.savgy__toolbar__input {
text-align: right;
}
.savgy__toolbar__row {
margin-bottom: 0.5em;
}
.savgy__toolbar__row--2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0.5em;
}
.savgy__grd-label {
display: grid;
grid-template-columns: 0.25fr 1.75fr;
gap: 1em;
}
.savgy__toolbar__col {
/*
grid-template-areas:
"col1 col2 col3 col4";
*/
border: var(--brd);
border-radius: var(--brd-rad);
align-items: center;
padding: var(--pdd);
input,
select {
line-height: 1.2em;
height: min-content;
outline: none;
}
select {
background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 95 100' id='icn-chevron-down' fill='none' stroke-width='10' stroke='white'><path stroke='white' d='M84.4 32l-37.5 37.5l-37.5 -37.5'/></svg>");
background-repeat: no-repeat;
background-position: 100% 50%;
background-size: 1em;
}
}
.savgy__toolbar__row:has(.savgy__toolbar__select--format--img) {
display: none
}
.savgy__toolbar__row:has(.savgy__toolbar__select--format--img--active) {
display: block
}
.savgy__toolbar__select {
grid-column-start: 0;
grid-column-end: 1;
}
/** image rendering */
/*
.savgy__preview {
image-rendering: optimizeSpeed;
image-rendering: -moz-crisp-edges;
image-rendering: -webkit-optimize-contrast;
image-rendering: pixelated;
image-rendering: optimize-contrast;
}
*/
.savgy--copying {
opacity: 0.5
}
.saveg__filesize {
margin: 0;
margin-top: 1em;
}