kithkin/resources/css/lib/button.css

148 lines
3.6 KiB
CSS

button,
.button {
@apply relative inline-flex items-center cursor-pointer gap-2 rounded-md h-11 px-4 text-lg font-medium;
@apply outline-0 outline-transparent outline-offset-0;
@apply focus:outline-2 focus:outline-offset-2 focus:outline-cyan-600;
transition: border-color 125ms ease-in-out, outline 125ms ease-in-out;
--button-border: var(--color-primary);
--button-accent: var(--color-primary-hover);
&.button--primary {
@apply bg-cyan-400 border-md border-solid focus:border-primary;
border-color: var(--button-border);
box-shadow: 2.5px 2.5px 0 0 var(--button-border);
&:hover {
@apply bg-cyan-500;
border-color: var(--button-accent);
}
&:active {
left: 2.5px;
top: 2.5px;
}
}
&.button--secondary {
@apply bg-white border-md border-solid;
border-color: var(--button-border);
--button-border: var(--color-gray-400);
--button-accent: var(--color-gray-100);
&:hover {
@apply bg-gray-100;
}
}
&.button--tertiary {
@apply px-0;
&:hover {
@apply underline decoration-[1.5px] underline-offset-3;
}
}
&.button--danger {
@apply bg-red-500 font-bold;
--button-accent: var(--color-red-900);
&:hover {
@apply bg-red-600;
}
}
&.button--icon {
@apply justify-center p-0 h-12 top-px rounded-blob;
aspect-ratio: 1 / 1;
&:hover {
background-color: rgba(0, 0, 0, 0.075);
}
}
&.button--sm {
@apply text-base px-2 h-8;
}
}
/* button groups are used with labels/checks as well as regular buttons */
.button-group {
@apply relative flex flex-row items-center p-0 m-0 h-11 max-h-11 rounded-md;
box-shadow: 2.5px 2.5px 0 0 var(--color-primary);
> label,
> button {
@apply relative flex items-center justify-center h-full pl-3.5 pr-3 cursor-pointer;
@apply border-md border-primary border-l-0 font-medium rounded-none;
transition: outline 125ms ease-in-out;
box-shadow: var(--shadows);
--shadows: none;
&:hover {
@apply bg-cyan-200;
}
&:has(input:checked),
&:active {
@apply bg-cyan-400 border-r-transparent;
top: 2.5px;
--shadows: var(--shadow-checked);
&:hover {
@apply bg-cyan-500;
}
+ label,
+ button {
--shadows: var(--shadow-sibling);
}
}
&:has(input:checked) {}
&:first-of-type {
@apply rounded-l-md border-l-md;
&:has(input:checked),
&:active {
--shadows: var(--shadow-active);
}
&:focus,
&:active {
box-shadow:
0 0 0 2px var(--color-white),
0 0 0 4px var(--color-cyan-600),
var(--focus-ring);
--focus-ring: ;
}
}
&:last-of-type {
@apply border-r-md rounded-r-md;
&:has(input:checked),
&:active {
@apply border-r-primary;
}
}
}
> label {
> input[type="radio"] {
@apply hidden absolute top-0 left-0 w-0 h-0 max-w-0 max-h-0;
}
}
&:has(> label:last-of-type input:checked),
&:has(> label:last-of-type:active) {
box-shadow: 1.5px 4.5px 0 -2px var(--color-primary);
}
/* small */
&.button-group--sm {
@apply h-9 max-h-9 text-sm;
}
}