From b0b0160ccb10f706b37f6dc18b7bf75eff0dc70d Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Mon, 7 Sep 2026 14:32:56 +0100 Subject: [PATCH] feat(web): align composer and activity to content width, icon cancel button Move max-width constraint from .structured-rows up to .structured-main so the activity banner and composer match the transcript width. Replace text cancel button with a stop-sign icon inside a spinning ring. Drop the accent border-top on composer focus. Co-Authored-By: Claude Opus 4.6 --- web/src/structured.ts | 5 ++++- web/src/styles.css | 29 ++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/web/src/structured.ts b/web/src/structured.ts index f605544..8e9af9d 100644 --- a/web/src/structured.ts +++ b/web/src/structured.ts @@ -113,7 +113,10 @@ export function createStructuredConnection( - + diff --git a/web/src/styles.css b/web/src/styles.css index c797ea8..e45eb60 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -2290,6 +2290,9 @@ input.leaf-rename:focus { .structured-main { min-width: 0; min-height: 0; + max-width: 820px; + margin-inline: auto; + width: 100%; display: flex; flex-direction: column; flex: 1 1 auto; @@ -2306,9 +2309,6 @@ input.leaf-rename:focus { display: flex; flex-direction: column; min-width: 0; - max-width: 820px; - margin-inline: auto; - width: 100%; } .structured-activity { @@ -3104,7 +3104,7 @@ input.leaf-rename:focus { } .structured-composer:focus-within { - border-top-color: var(--accent); + border-top-color: var(--border); } .structured-input-wrap { @@ -3220,7 +3220,9 @@ input.leaf-rename:focus { } .structured-composer .structured-cancel { - padding: 0 var(--sp-3); + position: relative; + width: 40px; + padding: 0; border-color: color-mix(in oklab, var(--danger) 35%, var(--border)); color: var(--danger); } @@ -3229,6 +3231,23 @@ input.leaf-rename:focus { background: var(--danger-tint); } +.structured-cancel-stop { + width: 16px; + height: 16px; +} + +.structured-cancel-spinner { + position: absolute; + inset: 4px; + width: auto; + height: auto; + animation: cancel-spin 0.8s linear infinite; +} + +@keyframes cancel-spin { + to { transform: rotate(360deg); } +} + @media (max-width: 520px) { /* One row cannot hold a draft plus three controls at phone width — the draft gets a line of its own and the controls drop below it. */