This repository has been archived on 2026-10-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
maestro/web/src/kit.css
T
Miguel Palhas 5c3f9cab9f feat(maestro): replace spawn modal with draft panes (#62)
The draft pane covers every field the modal had; the modal was a second
code path for the same job. The header Spawn button, sidebar empty state,
welcome button, and ?mock&spawn now open a draft pane via
MultiView.openDraft — reusing an empty focused pane, else splitting it.
"Spawn similar" seeds a draft with the session's cwd + command.

Modal-only CSS (backdrop, sheet/dialog chrome, keyframes) is deleted;
.modal-body form styling folds into .spawn-form, which also picks up the
select styling the worktree branch picker was borrowing from the modal.
2026-08-23 22:36:48 +01:00

269 lines
5.6 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =========================================================================
maestro web — design kit (DEV-only)
Loaded only by kit.ts (?kit). Layout for the specimen page + proposed
terminal-native button variants offered for critique. Nothing here ships:
kit.ts is dynamically imported behind import.meta.env.DEV.
========================================================================= */
.kit {
height: 100%;
overflow: auto;
background: var(--bg);
color: var(--ink);
scrollbar-width: thin;
scrollbar-color: var(--border-strong) transparent;
}
.kit-header {
position: sticky;
top: 0;
z-index: var(--z-sticky);
display: flex;
align-items: center;
gap: var(--sp-3);
padding: var(--sp-3) var(--sp-5);
border-bottom: 1px solid var(--border);
background: color-mix(in oklab, var(--surface) 82%, transparent);
backdrop-filter: blur(8px);
}
.kit-brand {
display: inline-flex;
align-items: center;
gap: var(--sp-2);
}
.kit-brand h1 {
margin: 0;
font-size: var(--fs-15);
font-weight: 600;
letter-spacing: -0.01em;
}
.kit-header-actions {
margin-left: auto;
display: inline-flex;
align-items: center;
gap: var(--sp-2);
}
.kit-main {
max-width: 1080px;
margin: 0 auto;
padding: var(--sp-6) var(--sp-5) var(--sp-8);
display: flex;
flex-direction: column;
gap: var(--sp-8);
}
.kit-section-head {
margin-bottom: var(--sp-4);
}
.kit-section-title {
margin: 0;
font-size: var(--fs-13);
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
color: var(--accent);
}
.kit-section-note {
margin: 6px 0 0;
font-family: var(--font-sans);
font-size: var(--fs-13);
color: var(--muted);
max-width: 70ch;
}
.kit-row {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
gap: var(--sp-4);
}
/* A specimen cell: the component above, its name below. */
.kit-cell {
display: flex;
flex-direction: column;
gap: var(--sp-2);
align-items: flex-start;
}
.kit-slot {
display: flex;
align-items: center;
min-height: 44px;
padding: var(--sp-3);
border: 1px dashed var(--border);
border-radius: var(--r-2);
background: color-mix(in oklab, var(--surface) 40%, var(--bg));
}
.kit-slot .spawn-form {
padding: 0;
min-width: 200px;
}
.kit-label {
font-size: var(--fs-11);
color: var(--faint);
letter-spacing: 0.01em;
}
/* color swatches */
.kit-swatches {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: var(--sp-3);
}
.kit-swatch {
display: flex;
flex-direction: column;
gap: 6px;
}
.kit-swatch-chip {
height: 48px;
border-radius: var(--r-2);
border: 1px solid var(--border);
}
/* session-row specimen sits in a sidebar-width container so wrapping/ellipsis
behave like the real sidebar. */
.kit-tree-host {
display: block;
}
.kit-tree {
width: clamp(280px, 26vw, 360px);
padding: var(--sp-2) 0;
background: color-mix(in oklab, var(--surface) 26%, var(--bg));
border: 1px solid var(--border);
border-radius: var(--r-2);
}
.kit-empties {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: var(--sp-4);
align-items: start;
}
.kit-empties .empty {
border: 1px solid var(--border);
border-radius: var(--r-2);
background: color-mix(in oklab, var(--surface) 30%, var(--bg));
}
/* -------------------------------------------------------------------------
Proposed terminal-native button variants (critique only)
------------------------------------------------------------------------- */
.kit-btn-bracket,
.kit-btn-prompt,
.kit-btn-block,
.kit-btn-underline {
appearance: none;
cursor: pointer;
font-family: var(--font-mono);
font-size: var(--fs-13);
height: var(--control-h);
display: inline-flex;
align-items: center;
gap: 6px;
background: transparent;
border: 1px solid transparent;
color: var(--ink);
transition:
color var(--dur-fast) var(--ease-out),
border-color var(--dur-fast) var(--ease-out),
background var(--dur-fast) var(--ease-out);
}
/* [ + Spawn ] — brackets are the chrome */
.kit-btn-bracket {
padding: 0 var(--sp-2);
}
.kit-btn-bracket::before {
content: "[";
color: var(--faint);
}
.kit-btn-bracket::after {
content: "]";
color: var(--faint);
}
.kit-btn-bracket:hover {
color: var(--accent);
}
.kit-btn-bracket:hover::before,
.kit-btn-bracket:hover::after {
color: var(--accent);
}
.kit-btn-bracket.is-primary {
color: var(--accent);
font-weight: 600;
}
.kit-btn-bracket.is-primary::before,
.kit-btn-bracket.is-primary::after {
color: var(--accent);
}
.kit-btn-bracket.is-primary:hover {
background: var(--accent-tint);
}
/* › spawn — a shell prompt */
.kit-btn-prompt {
padding: 0 var(--sp-2);
color: var(--muted);
}
.kit-btn-prompt::before {
content: "›";
color: var(--accent);
font-weight: 700;
}
.kit-btn-prompt:hover {
color: var(--ink);
}
/* SPAWN — boxed, uppercase, tight */
.kit-btn-block {
padding: 0 var(--sp-3);
border-color: var(--border-strong);
border-radius: var(--r-1);
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: var(--fs-11);
font-weight: 600;
color: var(--muted);
}
.kit-btn-block:hover {
color: var(--accent);
border-color: var(--accent);
background: var(--accent-tint);
}
/* spawn — underline only */
.kit-btn-underline {
padding: 0 2px;
border-radius: 0;
border-bottom: 1px solid var(--border-strong);
color: var(--muted);
}
.kit-btn-underline:hover {
color: var(--accent);
border-bottom-color: var(--accent);
}
.kit-btn-bracket:focus-visible,
.kit-btn-prompt:focus-visible,
.kit-btn-block:focus-visible,
.kit-btn-underline:focus-visible {
outline: 2px solid var(--accent-ring);
outline-offset: 2px;
border-radius: var(--r-1);
}