Uh oh!
There was an error while loading. Please reload this page.
feat(headless): add Tabs primitive - #8476
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
e4450bd to
a351712Compare9f473a8 to
5b5ddfaCompare5b5ddfa to
47cce7aComparea351712 to
4b71a5cCompare4b71a5c to
b65db13Compare47cce7a to
78ffbf1Compare78ffbf1 to
22dc58fCompareb65db13 to
0afcb06CompareIntroduces the @clerk/headless package — a zero-style React component library providing accessible headless UI primitives. This first PR establishes the core infrastructure and patterns: - Package scaffold: Vite build, Vitest browser tests (Chromium), TypeScript config - Core utils: renderElement (polymorphic rendering with render prop support), mergeProps (event handler chaining, style/className merging) - Hooks: useControllableState, useTransitionStatus, useAnimationsFinished, useTransition - First primitive: Dialog (modal with focus trapping, scroll lock, portal support) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…losed FloatingOverlay applies overflow:hidden to the body, which locks scroll. Previously it was always rendered in the non-scoped path — now it's only mounted when the backdrop is visible. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Without Dialog.Portal wrapping it, DialogPopup rendered FloatingFocusManager and popup DOM unconditionally. Gate on mounted state to match DialogOverlay and DialogPortal behavior.
Split the monolithic dialog.tsx into individual files per subcomponent and use `export * as Dialog` namespace re-export instead of Object.assign. This enables bundlers to tree-shake unused Dialog parts at the module level. API change: <Dialog> becomes <Dialog.Root>
0afcb06 to
25cf99eCompare25cf99e to
758b949Compare483637a to
a7cbc25Compare758b949 to
2afb61fCompareIntroduces the @clerk/headless package — a zero-style React component library providing accessible headless UI primitives. This first PR establishes the core infrastructure and patterns: - Package scaffold: Vite build, Vitest browser tests (Chromium), TypeScript config - Core utils: renderElement (polymorphic rendering with render prop support), mergeProps (event handler chaining, style/className merging) - Hooks: useControllableState, useTransitionStatus, useAnimationsFinished, useTransition - First primitive: Dialog (modal with focus trapping, scroll lock, portal support) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces the @clerk/headless package — a zero-style React component library providing accessible headless UI primitives. This first PR establishes the core infrastructure and patterns: - Package scaffold: Vite build, Vitest browser tests (Chromium), TypeScript config - Core utils: renderElement (polymorphic rendering with render prop support), mergeProps (event handler chaining, style/className merging) - Hooks: useControllableState, useTransitionStatus, useAnimationsFinished, useTransition - First primitive: Dialog (modal with focus trapping, scroll lock, portal support) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces the @clerk/headless package — a zero-style React component library providing accessible headless UI primitives. This first PR establishes the core infrastructure and patterns: - Package scaffold: Vite build, Vitest browser tests (Chromium), TypeScript config - Core utils: renderElement (polymorphic rendering with render prop support), mergeProps (event handler chaining, style/className merging) - Hooks: useControllableState, useTransitionStatus, useAnimationsFinished, useTransition - First primitive: Dialog (modal with focus trapping, scroll lock, portal support) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2afb61f to
8ed36d3Comparea7cbc25 to
2379a11Compare2379a11 to
8b06f02Comparealexcarpenter
commented
Jun 9, 2026
Superseded by #8790, which consolidates the remaining headless primitive stack (Tabs → Collapsible) into a single PR for one review pass. Closing in favor of that. |
Summary
shouldForceMountfor directional slide animationsReview Stack
Test plan
pnpm buildsucceedspnpm testpasses (+45 tabs tests)🤖 Generated with Claude Code