@indiekit/frontend
Version:
Frontend components for Indiekit
112 lines (93 loc) • 2.45 kB
CSS
.input {
appearance: none;
background-color: var(--color-background);
border: var(--input-border-width) solid var(--color-outline-variant);
border-radius: var(--border-radius-small);
font: var(--font-body);
inline-size: 100%;
margin-block-end: var(--input-border-width-focus-offset);
padding-block: calc(var(--space-s) / 2);
padding-inline: var(--space-s);
&:focus-visible {
border-color: var(--color-on-background);
border-width: var(--input-border-width-focus);
inset-block-start: calc(var(--input-border-width-focus-offset) * -1);
margin-block-end: calc(var(--input-border-width-focus-offset) * -1);
padding-inline-start: calc(
var(--space-s) - var(--input-border-width-focus-offset)
);
}
&:disabled,
&[readonly] {
background: var(--color-offset);
border-color: var(--color-offset);
color: var(--color-on-offset);
}
&[type="color"] {
max-inline-size: 6ch;
min-block-size: 3rem;
padding: var(--border-width-thickest);
&::-webkit-color-swatch-wrapper {
padding: 0;
}
&:focus-visible {
min-block-size: calc(3rem + var(--input-border-width-focus-offset));
}
}
&[type="datetime-local"],
&[type="date"],
&[type="time"] {
min-block-size: 2.5rem;
padding-block: 0.25rem;
&::-webkit-datetime-edit-year-field:focus,
&::-webkit-datetime-edit-month-field:focus,
&::-webkit-datetime-edit-day-field:focus,
&::-webkit-datetime-edit-hour-field:focus,
&::-webkit-datetime-edit-minute-field:focus {
background-color: var(--color-selection);
}
}
&[type="file"] {
background: none;
border: 0;
padding: 0;
&:focus-visible {
inset-block-start: 0;
margin-block-end: var(--input-border-width-focus-offset);
}
}
}
.input--error {
border-color: var(--color-error);
}
.input--width-25 {
max-inline-size: 44ch;
}
.input--width-10 {
max-inline-size: 19ch;
}
.input--width-5 {
max-inline-size: 11ch;
}
.input--width-2 {
max-inline-size: 6ch;
}
/* Show an input and button combined */
.input-button-group {
align-items: end;
display: flex;
flex-wrap: wrap;
gap: var(--space-2xs);
& *:first-child {
flex: 999 1 auto;
inline-size: auto;
max-inline-size: 100%;
}
& .input:focus-visible {
margin-inline-end: calc(var(--input-border-width-focus) * -1);
}
& *:last-child {
flex: 1 1 auto;
margin-block-start: 0;
}
}