loopable / web /src /customer-grid /FormInterface.css
fsanyoto's picture
Deploy AIOS web (React glide grid + FastAPI slice)
dcdb685 verified
Raw
History Blame Contribute Delete
5.63 kB
/* ---------------------------------------------------------------------------
customer-grid / FormInterface.css
⭐ WAVE-29 R7 — the FORM builder's own stylesheet.
Its own file rather than `index.css` for two reasons, and only one of them is this wave's
fence: a mode's surface that ships with its component can be read, moved or retired in one
place (`RecordDetail.css` and `ImportDialog.css` set the precedent), and `index.css` is
already the app's largest single file.
Every colour, radius and type size is a `--lp-*` token. Nothing here invents a hue: the token
parity gate compares `index.css` against `theme.ts`, and a raw hex would be invisible to it.
--------------------------------------------------------------------------- */
.cg-form-build {
display: flex;
flex-wrap: wrap;
gap: 24px;
align-items: flex-start;
overflow: auto;
padding: 20px 24px 32px;
height: 100%;
background: var(--lp-surface);
color: var(--lp-ink);
font-size: var(--lp-fs-xs);
}
.cg-form-pane {
flex: 1 1 320px;
min-width: 300px;
max-width: 560px;
}
.cg-form-h {
margin: 0 0 12px;
font-size: var(--lp-fs-lg);
font-weight: 600;
}
.cg-form-sub {
margin: 22px 0 8px;
font-size: var(--lp-fs-2xs);
font-weight: 600;
letter-spacing: 0.02em;
color: var(--lp-muted);
}
/* The first `.cg-form-sub` in a pane sits under no heading of its own. */
.cg-form-pane > .cg-form-sub:first-child {
margin-top: 0;
}
.cg-form-note {
margin: 6px 0;
color: var(--lp-muted);
font-size: var(--lp-fs-2xs);
line-height: 1.5;
}
/* An honest warning, not an alarm: it is a state the reader can fix, so it is tinted rather
than shouted. Red is reserved for a refusal that has already cost something. */
.cg-form-warn {
margin: 8px 0;
padding: 8px 10px;
border: 1px solid var(--lp-red);
border-radius: var(--lp-r-sm);
background: var(--lp-red-tint);
color: var(--lp-red-deep);
font-size: var(--lp-fs-2xs);
line-height: 1.5;
}
.cg-form-empty {
display: grid;
place-items: center;
height: 100%;
padding: 40px;
color: var(--lp-muted);
font-size: var(--lp-fs-xs);
text-align: center;
}
/* --- the spec fields ------------------------------------------------------------------- */
.cg-form-row {
display: block;
margin: 0 0 12px;
}
.cg-form-row > span {
display: block;
margin-bottom: 4px;
color: var(--lp-muted);
font-size: var(--lp-fs-3xs);
font-weight: 600;
}
.cg-form-row input[type="text"],
.cg-form-row textarea,
.cg-form-addmail input {
width: 100%;
padding: 7px 9px;
border: 1px solid var(--lp-line);
border-radius: var(--lp-r-sm);
background: var(--lp-surface);
color: var(--lp-ink);
font-family: inherit;
font-size: var(--lp-fs-xs);
resize: vertical;
}
.cg-form-row input:disabled,
.cg-form-row textarea:disabled {
background: var(--lp-wash);
color: var(--lp-muted);
}
/* --- the question list ----------------------------------------------------------------- */
.cg-form-fields {
margin: 0;
padding: 0;
list-style: none;
border: 1px solid var(--lp-line);
border-radius: var(--lp-r-md);
overflow: hidden;
}
.cg-form-field {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 7px 10px;
border-bottom: 1px solid var(--lp-line);
}
.cg-form-field:last-child {
border-bottom: 0;
}
.cg-form-field.on {
background: var(--lp-blue-tint);
}
.cg-form-pick {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
cursor: pointer;
}
.cg-form-label {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cg-form-type {
color: var(--lp-muted);
font-size: var(--lp-fs-3xs);
}
.cg-form-req {
display: flex;
align-items: center;
gap: 5px;
flex: none;
color: var(--lp-muted);
font-size: var(--lp-fs-3xs);
cursor: pointer;
}
/* --- who can submit -------------------------------------------------------------------- */
.cg-form-radio {
display: flex;
align-items: flex-start;
gap: 9px;
margin-bottom: 10px;
cursor: pointer;
}
.cg-form-radio strong {
display: block;
font-weight: 600;
}
.cg-form-radio em {
display: block;
margin-top: 2px;
color: var(--lp-muted);
font-size: var(--lp-fs-3xs);
font-style: normal;
line-height: 1.5;
}
.cg-form-emails ul {
margin: 0 0 8px;
padding: 0;
list-style: none;
}
.cg-form-emails li {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 5px 0;
border-bottom: 1px solid var(--lp-line);
}
.cg-form-emails li:last-child {
border-bottom: 0;
}
.cg-form-addmail {
display: flex;
gap: 8px;
}
/* --- the share link -------------------------------------------------------------------- */
.cg-form-link {
padding: 10px 12px;
border: 1px solid var(--lp-line);
border-radius: var(--lp-r-md);
background: var(--lp-surface-2);
}
.cg-form-link code {
display: block;
margin-bottom: 8px;
overflow-wrap: anywhere;
color: var(--lp-blue-deep);
font-size: var(--lp-fs-2xs);
}
.cg-form-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.cg-form-build button {
padding: 5px 11px;
border: 1px solid var(--lp-line);
border-radius: var(--lp-r-pill);
background: var(--lp-surface);
color: var(--lp-ink);
font-family: inherit;
font-size: var(--lp-fs-2xs);
cursor: pointer;
}
.cg-form-build button:hover:not(:disabled) {
border-color: var(--lp-blue-solid);
color: var(--lp-blue-deep);
}
.cg-form-build button:disabled {
color: var(--lp-muted);
cursor: default;
}
.cg-form-emails button {
padding: 2px 8px;
font-size: var(--lp-fs-3xs);
}