refactor(maestro): extract the spawn form so it can live outside the modal

This commit is contained in:
Miguel Palhas
2026-08-23 19:52:18 +01:00
parent 10cb47c50b
commit cbfd5eee12
4 changed files with 612 additions and 403 deletions
+29 -14
View File
@@ -1280,7 +1280,8 @@ textarea {
scrollbar-color: var(--border-strong) transparent;
}
.modal-body label {
.modal-body label,
.spawn-form label {
display: flex;
flex-direction: column;
gap: 5px;
@@ -1289,7 +1290,8 @@ textarea {
letter-spacing: 0.01em;
}
.modal-body label.row-inline {
.modal-body label.row-inline,
.spawn-form label.row-inline {
flex-direction: row;
align-items: center;
gap: var(--sp-2);
@@ -1300,7 +1302,8 @@ textarea {
.modal-body input[type="text"],
.modal-body input[type="search"],
.modal-body select {
.modal-body select,
.spawn-form input[type="text"] {
background: var(--surface-2);
border: 1px solid var(--border);
border-radius: var(--r-2);
@@ -1316,20 +1319,23 @@ textarea {
}
.modal-body input[type="text"]:hover,
.modal-body select:hover {
.modal-body select:hover,
.spawn-form input[type="text"]:hover {
border-color: var(--border-strong);
}
.modal-body input[type="text"]:focus,
.modal-body input[type="search"]:focus,
.modal-body select:focus {
.modal-body select:focus,
.spawn-form input[type="text"]:focus {
outline: none;
border-color: var(--accent);
background: var(--surface);
box-shadow: 0 0 0 3px var(--accent-tint);
}
.modal-body input[type="checkbox"] {
.modal-body input[type="checkbox"],
.spawn-form input[type="checkbox"] {
width: 18px;
height: 18px;
accent-color: var(--accent);
@@ -1375,7 +1381,8 @@ textarea {
/* ---------- spawn form: tiles + recents picker (#27) ---------- */
.spawn-modal .field {
.spawn-modal .field,
.spawn-form .field {
display: flex;
flex-direction: column;
gap: var(--sp-2);
@@ -1546,6 +1553,13 @@ textarea {
flex: 1 1 auto;
}
.form-actions {
display: flex;
gap: var(--sp-2);
justify-content: flex-end;
margin-top: var(--sp-2);
}
.reroll {
flex: 0 0 auto;
}
@@ -2056,14 +2070,15 @@ textarea {
display: none;
}
.mv-pane-empty {
/* Draft pane (#57): an empty pane renders the shared spawn form inline.
The host is already a flex column; the form fills and scrolls within it. */
.mv-pane-host > .mv-draft {
flex: 1;
display: grid;
place-items: center;
padding: var(--sp-4);
color: var(--faint);
font: var(--fs-12) / 1.5 var(--font-mono);
text-align: center;
min-width: 0;
min-height: 0;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: var(--border-strong) transparent;
}
/* pane tools cluster (disconnect / split / close), top-right corner. The attach