{
+ const markup = renderPanel(prompt, { "question-1": { selectedOptionLabels: ["Incremental"] } });
+
+ expect(markup).not.toContain('role="checkbox"');
+ expect(markup).not.toContain("Select one or more options.");
+ });
});
diff --git a/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx b/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
index d50a0c264549..8a7b9fd79526 100644
--- a/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
+++ b/apps/web/src/components/chat/ComposerPendingUserInputPanel.tsx
@@ -242,13 +242,42 @@ const ComposerPendingUserInputCard = memo(function ComposerPendingUserInputCard(
);
const content = (
<>
+ {/* Multi-select is the only mode where more than one option
+ can stay lit, so it is the only one that gets a box: a
+ leading checkbox reads as "toggle me", where the trailing
+ check of a single-select reads as "answered". */}
+ {activeQuestion.multiSelect ? (
+
+ {/* Mounted only when checked, like the shared checkbox and
+ the mobile pill: a glyph hidden by `text-transparent`
+ comes back in forced-colors mode, where the OS
+ overrides both the text and the background, and every
+ empty box would then read as selected. */}
+ {isSelected ? : null}
+
+ ) : null}
{option.label}
{option.description && option.description !== option.label ? (
{option.description}
) : null}
- {isSelected ? (
+ {/* Multi-select keeps every number shortcut on screen while
+ options are being picked: the checkbox already carries the
+ state, and the keys stay live for the whole list. */}
+ {isSelected && !activeQuestion.multiSelect ? (
) : shortcutKey !== null ? (
{
handleOptionSelection(activeQuestion.id, option.label);