@symbion/opalui
Version:
A minimalistic CSS framework
239 lines (210 loc) • 4.57 kB
CSS
.c-fieldset {
border: 1px solid lch(from var(--col-secondary) l c h / var(--op-disabled));
padding: var(--p-fieldset);
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.c-fieldset > legend {
text-transform: uppercase;
letter-spacing: 0.1rem;
}
.c-input, .c-select, .c-input-group {
border-radius: var(--radius-control);
border: var(--border-w-sm) solid var(--col-secondary);
background: var(--col-container);
color: var(--col-on-container);
box-shadow: inset 0px 0px 1rem var(--col-frost);
width: 100%;
}
.c-input, .c-select {
padding: 0.5rem 0.5rem;
}
.c-select > option {
color: var(--col-on-surface);
background: var(--col-surface);
}
.c-input:focus-visible, .c-select:focus-visible {
outline: none;
box-shadow: inset 0px 0px 1rem var(--col-frost), 0px 0px var(--sh-focus) var(--col-focus);
}
input.c-input[type="color"] {
padding: 0.1rem;
min-height: calc(1rem + 2 * 0.5rem);
}
textarea.c-input {
resize: none;
}
textarea.c-input.resize {
resize: vertical;
}
.c-input-group {
display: flex;
align-items: stretch;
> * {
margin: auto;
}
> .c-input {
border: none;
}
> .c-dropdown > * > .c-input {
border: none;
background: none;
}
}
/*
.c-input-group:has(:focus) {
*/
.c-input-group:focus-within {
box-shadow: inset 0px 0px 1rem var(--col-frost), 0px 0px var(--sh-focus) var(--col-focus);
}
.c-input-group > .c-input:focus-visible, .c-input-group > .c-select:focus-visible {
box-shadow: none;
}
.c-input-group > *, .c-input-group > .c-dropdown > * > input {
border-width: var(--border-w-sm);
/*
background: transparent;
*/
/*
padding-top: 0;
padding-bottom: 0;
*/
box-shadow: none;
/*
align-items: center;
display: flex;
*/
}
.c-input-group > *:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.c-input-group > *:not(:first-child) {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
/**********/
/* Toggle */
/**********/
/*
.c-toggle + .c-toggle-ui {
*/
.c-toggle {
appearance: none;
height: 1.25rem;
width: 2.25rem;
/*
padding: 0.125rem;
*/
border-radius: 1rem;
background: var(--col-neutral-m1);
color: var(--col-on);
cursor: pointer;
display: inline-block;
position: relative;
--col-bg: var(--col-secondary);
--col-on: var(--col-on-secondary);
--col-em: var(--col-em-secondary);
&:checked {
background: var(--col-bg);
}
&.primary {
--col-bg: var(--col-primary);
--col-on: var(--col-on-primary);
--col-em: var(--col-em-primary);
}
&.secondary {
--col-bg: var(--col-secondary);
--col-on: var(--col-on-secondary);
--col-em: var(--col-em-secondary);
}
&.accent {
--col-bg: var(--col-accent);
--col-on: var(--col-on-accent);
--col-em: var(--col-em-accent);
}
&.error {
--col-bg: var(--col-error);
--col-on: var(--col-on-error);
--col-em: var(--col-em-error);
}
&.warning {
--col-bg: var(--col-warning);
--col-on: var(--col-on-warning);
--col-em: var(--col-em-warning);
}
&.success {
--col-bg: var(--col-success);
--col-on: var(--col-on-success);
--col-em: var(--col-em-success);
}
}
.c-toggle:after {
border-radius: 1rem;
content: "";
display: block;
height: 1rem;
width: 1rem;
margin: 0.125rem;
position: absolute;
left: 0;
background: var(--col-toggle-knob);
transition: all .2s ease-out;
}
.c-toggle:checked:after {
left: 1rem;
}
/*******************/
/* Settings Fields */
/*******************/
/* Settings field layout - label and input on same line with constrained widths */
.c-settings-field {
display: flex;
align-items: center;
gap: 1rem;
max-width: 600px;
padding-bottom: 0.5rem;
}
.c-settings-field > span,
.c-settings-field > label {
flex: 1 1 auto;
min-width: 0;
}
.c-settings-field .c-input,
.c-settings-field .c-select {
flex: 0 0 auto;
width: auto;
min-width: 150px;
max-width: 200px;
}
.c-settings-field .c-toggle {
flex: 0 0 auto;
}
/* Password fields can be a bit wider */
.c-settings-field .c-input[type="password"],
.c-settings-field .c-input[type="text"] {
max-width: 250px;
}
/* Settings section for grouping related fields */
.c-settings-section {
margin-bottom: 1.5rem;
}
.c-settings-section-title {
font-size: 0.875rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: lch(from var(--col-on) l c h / 0.6);
margin-bottom: 0.75rem;
padding-bottom: 0.5rem;
border-bottom: var(--border-w-sm) solid var(--col-outline);
}
/* Form hint text - muted styling for helper text */
.c-hint {
font-size: 0.875rem;
color: lch(from var(--col-on) l c h / 0.6);
line-height: 1.4;
}
/* vim: ts=4
*/