Files
2025-01-04 00:34:03 +01:00

180 lines
3.1 KiB
Plaintext

.standard-form {
display: flex;
flex-direction: column;
flex-wrap: nowrap;
gap: 1rem;
/** Tabs */
.tab {
flex-direction: column;
flex-wrap: nowrap;
gap: 1rem;
&.active {
display: flex;
}
}
/** Fieldsets */
fieldset {
padding: 1rem;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
gap: 1rem;
border-color: var(--color-fieldset-border);
border-radius: 8px;
legend {
font-size: var(--font-size-15);
font-weight: bold;
}
&:disabled {
.form-group {
pointer-events: none;
}
}
}
fieldset.input-grid {
--grid-cols: 2;
display: grid;
grid-template-columns: repeat(var(--grid-cols), 1fr);
gap: .5rem;
}
/** Buttons */
button {
height: var(--input-height);
}
/* Icon Inputs */
label.icon:has(> input) {
background: var(--input-background-color);
border: 1px solid var(--input-border-color);
border-radius: 3px;
display: flex;
align-items: center;
gap: .25rem;
padding: .125rem .5rem;
&:has(> input:disabled) { border: none; }
&:focus-within { outline: 2px solid var(--input-focus-outline-color); }
> input {
flex: 1;
border: none;
border-radius: 0;
width: unset;
padding: 0;
background: none;
&:focus {
box-shadow: none;
outline: none;
}
}
> i { flex: none; }
}
/** Form Groups */
.form-group {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
margin: 0;
gap: 0.5rem;
// Flex form inputs
> * {
flex: 2;
}
> input[type=checkbox] {
flex: none;
}
// Labels
> label {
flex: 1;
color: var(--color-form-label);
font-weight: bold;
line-height: var(--input-height);
> i {
margin-right: 0.25rem;
}
> input {
font-weight: initial;
}
}
// Icon-Only Labels
> label.icon {
flex: 0 0 1rem;
> i {
margin: 0;
}
}
// Stacked form groups, label is on its own line
&.stacked {
> * {
flex: 0 0 100%;
}
}
// Form group hover behavior
&:hover {
> label {
color: var(--color-form-label-hover);
}
}
}
.form-fields {
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
gap: 0.5rem;
> * {
flex: 1;
}
> input[type="checkbox"],
> label {
flex: none;
}
&.flexcol {
flex-direction: column;
}
}
/** Hint Text */
.hint {
margin: 0;
font-size: var(--font-size-14);
color: var(--color-form-hint);
}
.form-group .hint {
flex: 0 0 100%;
}
.form-group:hover .hint {
color: var(--color-form-hint-hover);
}
/** Form Footers */
.form-footer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
gap: 0.5rem;
> button,
a.button {
flex: 1;
height: calc(1.25 * var(--input-height));
min-width: 180px;
}
}
}