Files
website/src/styles/controls.css
T

319 lines
6.7 KiB
CSS

/* @import './mixins.scss'; */
/*
Controls - for things like buttons, input, select
*/
@layer base {
button,
.button,
[role='button'] {
appearance: none;
background: #fff;
/* @include neo-brutalist-card; */
border: 3px solid #222;
border-radius: 6px;
box-shadow: 4px 4px 0 0 #222;
transition: all 64ms linear;
display: grid;
place-content: center;
grid-auto-flow: column;
gap: 0.25rem;
&:hover {
transform: translate(-1px, -1px);
box-shadow: 5px 5px 0 0 #222;
}
&:active {
transform: translate(2px, 2px);
box-shadow: 2px 2px 0 0 #222;
}
& {
padding: 0.25rem 1.5rem;
text-decoration: none;
color: #222;
font-family: var(--font-secondary); /* TODO: check if this is a global variable and replace */
font-weight: 600;
cursor: pointer;
}
&.primary {
background: #1e6733;
color: #f4fef7;
&:hover {
background: #2b8b47;
}
}
&.icon {
padding: 0.25rem;
margin-right: 0.25rem;
margin-bottom: 0.25rem;
}
&.flat {
background: transparent;
color: #222;
border: none;
box-shadow: none;
&:hover {
background: #0002;
}
}
}
input[type='text'],
input[type='password'] {
width: 100%;
min-height: 1.75rem;
/* @include neo-brutalist-card; */
border: 3px solid #222;
border-radius: 6px;
box-shadow: 4px 4px 0 0 #222;
padding: 0 0.25rem;
&:hover {
background: #fdfdfd;
}
}
input[type='checkbox'] {
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
width: calc(1.5rem + 1px);
height: calc(1.5rem + 1px);
background: #fff;
border: 3px solid #222;
border-radius: 4px;
box-shadow: 3px 3px 0 0 #222;
position: relative;
cursor: pointer;
transition: all 64ms linear;
&:hover {
transform: translate(-1px, -1px);
box-shadow: 4px 4px 0 0 #222;
}
&:active {
transform: translate(1px, 1px);
box-shadow: 2px 2px 0 0 #222;
}
&:checked {
background: #1e6733;
&::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 0.8rem;
height: 0.8rem;
background: #1e6733;
clip-path: polygon(10% 55%, 35% 75%, 85% 25%, 90% 35%, 40% 95%, 5% 60%);
}
&:hover {
background: #2b8b47;
}
}
&:disabled {
background: #eee;
border-color: #888;
box-shadow: 3px 3px 0 0 #888;
cursor: not-allowed;
&:hover {
transform: none;
box-shadow: 3px 3px 0 0 #888;
}
&:checked {
background: #aaa;
&::after {
background: #666;
}
}
}
&.star {
&:checked::after {
background: rgb(255, 197, 49);
clip-path: polygon(
50% 0%,
61% 35%,
98% 35%,
68% 57%,
79% 91%,
50% 70%,
21% 91%,
32% 57%,
2% 35%,
39% 35%
);
}
}
}
form {
display: grid;
gap: 1rem;
padding: 2rem;
background: #38adc1;
min-width: 40ch;
/* @include neo-brutalist-card($size: 3px, $offset: 9px); */
border: 3px solid #222;
border-radius: 6px;
box-shadow: 9px 9px 0 0 #222;
button,
.button,
[role='button'] {
padding-left: 3rem;
padding-right: 3rem;
&.primary {
background: #1c7f90;
color: #f4fef7;
&:hover {
background: #4ea2b1;
}
}
&:disabled {
background: #aaa;
color: #666;
cursor: not-allowed;
&:active {
transform: none;
box-shadow: 4px 4px 0 0 #222;
}
&:hover {
background: #aaa;
transform: none;
box-shadow: 4px 4px 0 0 #222;
}
}
}
hr {
border: none;
width: 100%;
height: 2px;
background: #0003;
margin-top: 1rem;
}
> .row {
display: grid;
grid-template-columns: auto 1fr;
align-items: center;
gap: 0.5rem;
span.material-symbols-outlined {
font-size: 1.5rem;
color: #222;
}
input[type='text'],
input[type='password'] {
width: 100%;
min-height: 2.5rem;
padding-left: 0.5rem;
}
}
.right {
justify-self: end;
}
.left {
justify-self: start;
}
.center {
justify-self: center;
}
@media screen and (max-width: 1024px) {
min-width: 0;
padding: 1.5rem;
gap: 1.5rem;
}
}
details {
width: 100%;
summary {
display: grid;
place-content: center;
place-items: center;
list-style: none;
&::-webkit-details-marker {
display: none;
}
}
.details-openned,
.details-closed {
display: contents;
}
&:not([open]) {
.details-openned {
display: none;
}
}
&[open] {
summary {
padding-bottom: 1rem;
}
.details-closed {
display: none;
}
}
@media screen and (max-width: 1024px) {
/* TODO: check if this is a global variable and replace */
summary {
place-content: stretch;
place-items: stretch;
}
}
}
}