diff --git a/.changeset/fn-7602-shortcut-row-layout.md b/.changeset/fn-7602-shortcut-row-layout.md new file mode 100644 index 0000000000..908fbba219 --- /dev/null +++ b/.changeset/fn-7602-shortcut-row-layout.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Fix overlapping Record and Clear buttons in the Keyboard Shortcuts settings rows on desktop and mobile. +category: fix +dev: The shortcut-capture Record/Clear buttons no longer use the icon-only `btn-icon` class (which set `line-height:0` and a mobile 36px square, clipping/overlapping the text labels); they use a text-button class and the `.shortcut-capture` row locks buttons with `flex-shrink:0` so the input and controls never overlap, stacking cleanly on mobile. diff --git a/packages/dashboard/app/components/SettingsModal.css b/packages/dashboard/app/components/SettingsModal.css index dbc288c1b0..21c5122a70 100644 --- a/packages/dashboard/app/components/SettingsModal.css +++ b/packages/dashboard/app/components/SettingsModal.css @@ -2550,6 +2550,17 @@ FN-7553's dedicated Keyboard Shortcuts section groups every action under a categ border-bottom: 0; } +/* +FNXC:DashboardShortcuts 2026-07-05-00:00: +FN-7602 fixes an overlap bug: Record/Clear previously used the icon-only `btn-icon` class +(line-height:0 + mobile 36px square), which clipped/overlapped their text labels +("Record"/"Recording…"/"Clear") against the input and each other (IMG_1305). The input +keeps `flex: 1 1 auto; min-width: 0;` so it shrinks first, while the buttons get +`flex-shrink: 0; white-space: nowrap;` so their content-sized width (including the longer +"Recording…" label) is never crushed or allowed to overlap a neighbor on desktop. Below +768px the row stacks to a column so the buttons sit on their own row under the full-width +input, still non-overlapping. +*/ .shortcut-capture { display: flex; align-items: center; @@ -2566,6 +2577,12 @@ FN-7553's dedicated Keyboard Shortcuts section groups every action under a categ border-color: var(--color-error); } +.shortcut-capture__record, +.shortcut-capture__clear { + flex-shrink: 0; + white-space: nowrap; +} + .shortcut-capture__record--active { color: var(--color-warning); } diff --git a/packages/dashboard/app/components/settings/sections/ShortcutCaptureInput.tsx b/packages/dashboard/app/components/settings/sections/ShortcutCaptureInput.tsx index 94ea657ee5..1e77ccbb25 100644 --- a/packages/dashboard/app/components/settings/sections/ShortcutCaptureInput.tsx +++ b/packages/dashboard/app/components/settings/sections/ShortcutCaptureInput.tsx @@ -91,9 +91,19 @@ export function ShortcutCaptureInput({ id, value, defaultValue, invalid, describ }} onChange={(event) => onChange(event.target.value)} /> + {/* + FNXC:DashboardShortcuts 2026-07-05-00:00: + Record/Clear are TEXT-labeled buttons ("Record"/"Recording…"/"Clear"), not icon-only + controls. `btn-icon` sets `line-height: 0` and a mobile 36px square meant for SVG-only + buttons — applying it here clipped the label's line box and, at mobile widths, forced + "Recording…" to overflow the fixed square and overlap the Clear button/input + (reported via screenshot IMG_1305). Use `btn-sm` instead so labels render on a normal + line-height with content-sized width; `.shortcut-capture` locks these buttons with + `flex-shrink: 0` so they never collide with the input or each other. + */}