Current section

Files

Jump to
phoenix_duskmoon assets css neumorphic checkbox.css
Raw

assets/css/neumorphic/checkbox.css

@layer components {
.neumorphic-checkbox {
display: inline-grid;
place-items: center;
position: relative;
flex-shrink: 0;
cursor: pointer;
appearance: none;
border-radius: var(--radius-selector);
padding: calc(0.25rem * 1);
vertical-align: middle;
color: var(--color-base-content);
box-shadow: 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1)) inset, 0 0 #0000 inset, 0 0 #0000;
transition: background-color 0.2s, box-shadow 0.2s;
--size: calc(var(--size-selector, 0.25rem) * 6);
width: var(--size);
height: var(--size);
background-size: auto, calc(var(--noise) * 100%);
background-image: none, var(--fx-noise);
&:before {
--tw-content: "";
content: var(--tw-content);
display: block;
width: 100%;
height: 100%;
rotate: 45deg;
background-color: currentColor;
opacity: 0%;
transition: clip-path 0.3s, opacity 0.1s, rotate 0.3s, translate 0.3s;
transition-delay: 0.1s;
clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 70% 80%, 70% 100%);
box-shadow: 0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset;
font-size: 1rem;
line-height: 0.75;
}
&:focus-visible {
outline: 2px solid var(--input-color, currentColor);
outline-offset: 2px;
}
&:checked, &[aria-checked="true"] {
background-color: var(--input-color, #0000);
box-shadow: 0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * 0.1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * 0.1));
&:before {
clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 0%, 70% 0%, 70% 100%);
opacity: 100%;
@media print {
rotate: 0deg;
}
@media print {
background-color: transparent;
}
@media print {
--tw-content: "✔︎";
}
@media print {
clip-path: none;
}
@media (forced-colors: active) {
rotate: 0deg;
background-color: transparent;
--tw-content: "✔︎";
clip-path: none;
}
}
}
&:indeterminate {
&:before {
rotate: 0deg;
opacity: 100%;
translate: 0 -35%;
clip-path: polygon(20% 100%, 20% 80%, 50% 80%, 50% 80%, 80% 80%, 80% 100%);
}
}
&:disabled {
cursor: not-allowed;
opacity: 20%;
}
}
}