Skip to content

fix(chain-of-thought): share one Collapsible root for header and content - #506

Open
HardMax71 wants to merge 1 commit into
vercel:mainfrom
HardMax71:fix/chain-of-thought-aria-controls
Open

HardMax71 wants to merge 1 commit into
vercel:mainfrom
HardMax71:fix/chain-of-thought-aria-controls

Conversation

@HardMax71

Copy link
Copy Markdown

ChainOfThought now renders the Collapsible root, as Reasoning does, and ChainOfThoughtHeader and ChainOfThoughtContent render only the trigger and the content inside it, so Radix sets aria-controls and the content id itself. The context still carries isOpen for the chevron, and the content keeps the context check, so using it outside ChainOfThought throws as before.

One visible difference: the two wrapper divs are gone. With the content open the spacing is the same. With it closed, the empty content root used to be the last child of the space-y-4 container and gave the header a 1rem bottom margin; that margin is gone. I checked both states on a static page with the same markup and compiled Tailwind classes.

New test in __tests__/chain-of-thought.test.tsx, "points the header's aria-controls at the content": fails on main, passes here. The full @repo/elements suite passes (959 tests).

Closes #505

ChainOfThoughtHeader and ChainOfThoughtContent each rendered their own
Collapsible root, so the trigger's aria-controls named the content id of
the header's root, which never renders, and the content had an id no
control referenced. ChainOfThought now renders the Collapsible root, as
Reasoning does, and the header and content use its trigger and content.
@vercel

vercel Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

@HardMax71 is attempting to deploy a commit to the Vercel Team on Vercel.

A member of the Team first needs to authorize it.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ChainOfThought: the header's aria-controls points at an element that is never rendered

1 participant