Skip to content

fix(theme): default transition-duration#6011

Merged
wingkwong merged 2 commits into
canaryfrom
fix/issue-5992
Dec 20, 2025
Merged

fix(theme): default transition-duration#6011
wingkwong merged 2 commits into
canaryfrom
fix/issue-5992

Conversation

@wingkwong
Copy link
Copy Markdown
Member

@wingkwong wingkwong commented Dec 19, 2025

📝 Description

temporary workaround

⛳️ Current behavior (updates)

🚀 New behavior

💣 Is this a breaking change (Yes/No):

📝 Additional Information

Summary by CodeRabbit

  • Bug Fixes

    • Restored a 150ms transition-duration option and removed an ambiguous default so animations use consistent, predictable timings.
  • Chores

    • Updated packages to require a newer theme version for compatibility across components.

✏️ Tip: You can customize this high-level summary in your review settings.

@wingkwong wingkwong added this to the v2.8.7 milestone Dec 19, 2025
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Dec 19, 2025

🦋 Changeset detected

Latest commit: 1cbfc32

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 13 packages
Name Type
@heroui/theme Patch
@heroui/autocomplete Patch
@heroui/checkbox Patch
@heroui/date-input Patch
@heroui/date-picker Patch
@heroui/form Patch
@heroui/input-otp Patch
@heroui/input Patch
@heroui/number-input Patch
@heroui/radio Patch
@heroui/select Patch
@heroui/table Patch
@heroui/react Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link
Copy Markdown

vercel Bot commented Dec 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
heroui Ready Ready Preview, Comment Dec 20, 2025 1:55pm
heroui-sb Ready Ready Preview, Comment Dec 20, 2025 1:55pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 19, 2025

Walkthrough

Removes a default transition-duration entry from the core theme plugin and adds a changeset documenting a patch for @heroui/theme; additionally, many packages’ package.json files bump their peerDependency requirement for @heroui/theme from ">=2.4.23" to ">=2.4.24".

Changes

Cohort / File(s) Summary
Theme plugin change
packages/core/theme/src/plugin.ts
Removed import and usage of DEFAULT_TRANSITION_DURATION and removed the corresponding transitionDuration entry from the Tailwind theme extension.
Changeset
.changeset/curly-pots-beam.md
Added changeset file documenting a patch release for @heroui/theme referencing fixes for default transition-duration.
Peer dependency bumps (many packages)
packages/components/*/package.json, packages/core/system-rsc/package.json, plop/component/package.json.hbs
Updated peerDependencies["@heroui/theme"] from ">=2.4.23" to ">=2.4.24" across component packages, system-rsc, and the plop template.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Pay attention to packages/core/theme/src/plugin.ts for correctness after removal of the default duration.
  • Spot-check a sample of component package.json files to ensure consistent version bump and no other accidental edits.
  • Verify .changeset/curly-pots-beam.md references the intended issues (#5992, #6005).

Suggested reviewers

  • jrgarciadev

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The PR description lacks critical details. While it closes the relevant issues, it provides only a vague 'temporary workaround' and leaves all template sections (current behavior, new behavior, breaking change, additional information) blank. Add detailed explanation of the fix: why DEFAULT_TRANSITION_DURATION was removed, how it resolves the animation issues, and why this is a temporary workaround.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: removing the default transition-duration configuration from the theme plugin to fix animation issues.
Linked Issues check ✅ Passed The code changes directly address both linked issues by removing the DEFAULT_TRANSITION_DURATION entry that was blocking Tailwind's default transition behavior, restoring smooth animations for components like Switch.
Out of Scope Changes check ✅ Passed All changes are in-scope: the theme plugin fix targets the root cause, peer dependency bumps in 46 package.json files ensure compatibility with the fixed theme version, and the changeset documents the patch release.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/issue-5992

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ef798c7 and 1cbfc32.

📒 Files selected for processing (49)
  • .changeset/curly-pots-beam.md (1 hunks)
  • packages/components/accordion/package.json (1 hunks)
  • packages/components/alert/package.json (1 hunks)
  • packages/components/autocomplete/package.json (1 hunks)
  • packages/components/avatar/package.json (1 hunks)
  • packages/components/badge/package.json (1 hunks)
  • packages/components/breadcrumbs/package.json (1 hunks)
  • packages/components/button/package.json (1 hunks)
  • packages/components/calendar/package.json (1 hunks)
  • packages/components/card/package.json (1 hunks)
  • packages/components/checkbox/package.json (1 hunks)
  • packages/components/chip/package.json (1 hunks)
  • packages/components/code/package.json (1 hunks)
  • packages/components/date-input/package.json (1 hunks)
  • packages/components/date-picker/package.json (1 hunks)
  • packages/components/divider/package.json (1 hunks)
  • packages/components/drawer/package.json (1 hunks)
  • packages/components/dropdown/package.json (1 hunks)
  • packages/components/form/package.json (1 hunks)
  • packages/components/image/package.json (1 hunks)
  • packages/components/input-otp/package.json (1 hunks)
  • packages/components/kbd/package.json (1 hunks)
  • packages/components/link/package.json (1 hunks)
  • packages/components/listbox/package.json (1 hunks)
  • packages/components/menu/package.json (1 hunks)
  • packages/components/modal/package.json (1 hunks)
  • packages/components/navbar/package.json (1 hunks)
  • packages/components/number-input/package.json (1 hunks)
  • packages/components/pagination/package.json (1 hunks)
  • packages/components/popover/package.json (1 hunks)
  • packages/components/progress/package.json (1 hunks)
  • packages/components/radio/package.json (1 hunks)
  • packages/components/ripple/package.json (1 hunks)
  • packages/components/scroll-shadow/package.json (1 hunks)
  • packages/components/select/package.json (1 hunks)
  • packages/components/skeleton/package.json (1 hunks)
  • packages/components/slider/package.json (1 hunks)
  • packages/components/snippet/package.json (1 hunks)
  • packages/components/spacer/package.json (1 hunks)
  • packages/components/spinner/package.json (1 hunks)
  • packages/components/switch/package.json (1 hunks)
  • packages/components/table/package.json (1 hunks)
  • packages/components/tabs/package.json (1 hunks)
  • packages/components/toast/package.json (1 hunks)
  • packages/components/tooltip/package.json (1 hunks)
  • packages/components/user/package.json (1 hunks)
  • packages/core/system-rsc/package.json (1 hunks)
  • packages/core/theme/src/plugin.ts (0 hunks)
  • plop/component/package.json.hbs (1 hunks)
💤 Files with no reviewable changes (1)
  • packages/core/theme/src/plugin.ts
✅ Files skipped from review due to trivial changes (5)
  • packages/components/drawer/package.json
  • .changeset/curly-pots-beam.md
  • packages/components/popover/package.json
  • packages/components/calendar/package.json
  • packages/components/badge/package.json
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-10-25T17:08:46.283Z
Learnt from: adbjo
Repo: heroui-inc/heroui PR: 5846
File: packages/components/tabs/src/tabs.tsx:156-157
Timestamp: 2025-10-25T17:08:46.283Z
Learning: In packages/components/tabs/src/tabs.tsx, the renderTabs useMemo dependency array intentionally includes `variant` and `isVertical` to prevent potential side-effects, even though they might appear redundant based on static analysis.

Applied to files:

  • packages/components/tabs/package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: Build
  • GitHub Check: Tests
  • GitHub Check: TypeScript
  • GitHub Check: Continuous Release
  • GitHub Check: ESLint
🔇 Additional comments (44)
packages/components/breadcrumbs/package.json (1)

39-39: LGTM! Consistent peerDependency bump across all component packages.

The peerDependency bump to >=2.4.24 ensures breadcrumbs uses the fixed theme version. All 42+ component packages in packages/components/ have been updated consistently with the same version requirement, confirming this is a coordinated, repository-wide update.

packages/components/spacer/package.json (1)

39-39: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/link/package.json (1)

39-39: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/select/package.json (1)

38-38: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/code/package.json (1)

39-39: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/divider/package.json (1)

39-39: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/snippet/package.json (1)

40-40: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/avatar/package.json (1)

39-39: LGTM! Peer dependency update is correct.

The version bump to >=2.4.24 ensures compatibility with the fixed theme package.

packages/components/spinner/package.json (1)

41-41: LGTM! Peer dependency bump aligns with theme fix.

The peer dependency update to >=2.4.24 correctly ensures this component requires the patched theme version that fixes the default transition-duration issue.

packages/components/user/package.json (1)

39-39: LGTM! Peer dependency updated to require the fixed theme version.

The version bump ensures this component uses the theme version (>=2.4.24) that includes the transition-duration fix for issues #6005 and #5992.

packages/components/menu/package.json (1)

39-39: LGTM! Peer dependency updated correctly.

packages/components/modal/package.json (1)

40-40: LGTM! Peer dependency updated correctly.

packages/components/checkbox/package.json (1)

38-38: LGTM! Peer dependency updated correctly.

packages/components/date-picker/package.json (1)

38-38: LGTM! Peer dependency updated correctly.

packages/components/slider/package.json (1)

39-39: LGTM! Peer dependency updated correctly.

packages/components/card/package.json (1)

40-40: LGTM! Peer dependency updated correctly.

packages/components/listbox/package.json (1)

39-39: All packages consistently updated to @heroui/theme >=2.4.24.

Verification confirms no packages reference older versions (>=2.4.23 or earlier). All 47 packages in the monorepo with this peer dependency have been updated correctly.

packages/components/image/package.json (1)

39-39: LGTM!

The peer dependency bump correctly enforces the minimum theme version (2.4.24) that includes the transition-duration fix.

packages/components/button/package.json (1)

40-40: LGTM!

The peer dependency update is correct and consistent with the PR-wide theme version bump.

packages/components/tabs/package.json (1)

40-40: LGTM!

The peer dependency update is correct and ensures the tabs component uses the theme version with the transition-duration fix.

packages/components/number-input/package.json (1)

42-42: LGTM!

The peer dependency bump is correct and aligns with the PR-wide version update.

packages/core/system-rsc/package.json (1)

38-38: LGTM!

The peer dependency update ensures RSC primitives are compatible with the updated theme version.

packages/components/form/package.json (1)

38-38: LGTM!

The peer dependency update is correct and consistent with the coordinated version bump across the monorepo.

packages/components/date-input/package.json (1)

38-38: LGTM!

The peer dependency bump correctly enforces the minimum theme version for the date-input component.

packages/components/scroll-shadow/package.json (2)

39-39: LGTM!

The peer dependency update is correct and aligns with the PR-wide theme version bump.


39-39: Core theme fix is verified.

DEFAULT_TRANSITION_DURATION has been successfully removed from the theme plugin, confirming the fix required for the peer dependency bump to @heroui/theme >= 2.4.24 is in place.

packages/components/ripple/package.json (1)

40-40: LGTM - version bump aligns with animation fix.

The ripple component relies heavily on transitions, so updating to the fixed theme version is essential.

packages/components/skeleton/package.json (1)

39-39: LGTM!

Peer dependency update is correct and consistent with the coordinated theme fix.

packages/components/tooltip/package.json (1)

40-40: LGTM!

Version constraint update is correct.

packages/components/dropdown/package.json (1)

38-38: LGTM!

Peer dependency update is correct.

plop/component/package.json.hbs (1)

39-39: Good catch updating the template.

Updating the component generator template ensures new components will be created with the correct theme version requirement.

packages/components/toast/package.json (1)

38-38: LGTM!

Version update is correct.

packages/components/table/package.json (1)

39-39: LGTM!

Peer dependency update is consistent with the coordinated fix.

packages/components/alert/package.json (1)

43-43: Update peer dependency to ensure theme fix compatibility.

The update to @heroui/theme >=2.4.24 correctly ensures this component will work with the theme's default transition-duration fixes. @heroui/theme@2.4.24 has already been published, and this PR includes changeset entries that will publish patch-level updates to the theme package.

packages/components/radio/package.json (1)

39-39: LGTM! Peer dependency correctly updated.

The version bump ensures the radio component requires the theme version with the transition-duration fix.

packages/components/chip/package.json (1)

39-39: LGTM! Peer dependency correctly updated.

The version bump ensures the chip component requires the theme version with the transition-duration fix.

packages/components/kbd/package.json (1)

39-39: LGTM! Peer dependency correctly updated.

The version bump ensures the kbd component requires the theme version with the transition-duration fix.

packages/components/navbar/package.json (1)

40-40: LGTM! Peer dependency correctly updated.

The version bump ensures the navbar component requires the theme version with the transition-duration fix.

packages/components/accordion/package.json (1)

46-46: LGTM! Peer dependency correctly updated.

The version bump ensures the accordion component requires the theme version with the transition-duration fix.

packages/components/autocomplete/package.json (1)

38-38: LGTM! Peer dependency correctly updated.

The version bump ensures the autocomplete component requires the theme version with the transition-duration fix.

packages/components/pagination/package.json (1)

39-39: LGTM! Peer dependency correctly updated.

The version bump ensures the pagination component requires the theme version with the transition-duration fix.

packages/components/progress/package.json (1)

39-39: LGTM! Peer dependency correctly updated.

The version bump ensures the progress component requires the theme version with the transition-duration fix.

packages/components/input-otp/package.json (1)

39-39: Peer dependency bump is correct and well-coordinated.

The update to >=2.4.24 for @heroui/theme aligns with the published version that includes the fix for default transition-duration behavior. All 46 component packages have been consistently updated with no remaining references to earlier versions.

packages/components/switch/package.json (1)

39-39: Bump @heroui/theme peer dependency to >=2.4.24.

The peer dependency update ensures the Switch component uses theme version 2.4.24 or newer. Verify that this aligns with any required theme-level changes for the Switch component.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Dec 19, 2025

Open in StackBlitz

@heroui/accordion

npm i https://pkg.pr.new/@heroui/accordion@6011

@heroui/alert

npm i https://pkg.pr.new/@heroui/alert@6011

@heroui/autocomplete

npm i https://pkg.pr.new/@heroui/autocomplete@6011

@heroui/avatar

npm i https://pkg.pr.new/@heroui/avatar@6011

@heroui/badge

npm i https://pkg.pr.new/@heroui/badge@6011

@heroui/breadcrumbs

npm i https://pkg.pr.new/@heroui/breadcrumbs@6011

@heroui/button

npm i https://pkg.pr.new/@heroui/button@6011

@heroui/calendar

npm i https://pkg.pr.new/@heroui/calendar@6011

@heroui/card

npm i https://pkg.pr.new/@heroui/card@6011

@heroui/checkbox

npm i https://pkg.pr.new/@heroui/checkbox@6011

@heroui/chip

npm i https://pkg.pr.new/@heroui/chip@6011

@heroui/code

npm i https://pkg.pr.new/@heroui/code@6011

@heroui/date-input

npm i https://pkg.pr.new/@heroui/date-input@6011

@heroui/date-picker

npm i https://pkg.pr.new/@heroui/date-picker@6011

@heroui/divider

npm i https://pkg.pr.new/@heroui/divider@6011

@heroui/drawer

npm i https://pkg.pr.new/@heroui/drawer@6011

@heroui/dropdown

npm i https://pkg.pr.new/@heroui/dropdown@6011

@heroui/form

npm i https://pkg.pr.new/@heroui/form@6011

@heroui/image

npm i https://pkg.pr.new/@heroui/image@6011

@heroui/input

npm i https://pkg.pr.new/@heroui/input@6011

@heroui/input-otp

npm i https://pkg.pr.new/@heroui/input-otp@6011

@heroui/kbd

npm i https://pkg.pr.new/@heroui/kbd@6011

@heroui/link

npm i https://pkg.pr.new/@heroui/link@6011

@heroui/listbox

npm i https://pkg.pr.new/@heroui/listbox@6011

@heroui/menu

npm i https://pkg.pr.new/@heroui/menu@6011

@heroui/modal

npm i https://pkg.pr.new/@heroui/modal@6011

@heroui/navbar

npm i https://pkg.pr.new/@heroui/navbar@6011

@heroui/number-input

npm i https://pkg.pr.new/@heroui/number-input@6011

@heroui/pagination

npm i https://pkg.pr.new/@heroui/pagination@6011

@heroui/popover

npm i https://pkg.pr.new/@heroui/popover@6011

@heroui/progress

npm i https://pkg.pr.new/@heroui/progress@6011

@heroui/radio

npm i https://pkg.pr.new/@heroui/radio@6011

@heroui/ripple

npm i https://pkg.pr.new/@heroui/ripple@6011

@heroui/scroll-shadow

npm i https://pkg.pr.new/@heroui/scroll-shadow@6011

@heroui/select

npm i https://pkg.pr.new/@heroui/select@6011

@heroui/skeleton

npm i https://pkg.pr.new/@heroui/skeleton@6011

@heroui/slider

npm i https://pkg.pr.new/@heroui/slider@6011

@heroui/snippet

npm i https://pkg.pr.new/@heroui/snippet@6011

@heroui/spacer

npm i https://pkg.pr.new/@heroui/spacer@6011

@heroui/spinner

npm i https://pkg.pr.new/@heroui/spinner@6011

@heroui/switch

npm i https://pkg.pr.new/@heroui/switch@6011

@heroui/table

npm i https://pkg.pr.new/@heroui/table@6011

@heroui/tabs

npm i https://pkg.pr.new/@heroui/tabs@6011

@heroui/toast

npm i https://pkg.pr.new/@heroui/toast@6011

@heroui/tooltip

npm i https://pkg.pr.new/@heroui/tooltip@6011

@heroui/user

npm i https://pkg.pr.new/@heroui/user@6011

@heroui/react

npm i https://pkg.pr.new/@heroui/react@6011

@heroui/system

npm i https://pkg.pr.new/@heroui/system@6011

@heroui/system-rsc

npm i https://pkg.pr.new/@heroui/system-rsc@6011

@heroui/theme

npm i https://pkg.pr.new/@heroui/theme@6011

@heroui/use-aria-accordion

npm i https://pkg.pr.new/@heroui/use-aria-accordion@6011

@heroui/use-aria-accordion-item

npm i https://pkg.pr.new/@heroui/use-aria-accordion-item@6011

@heroui/use-aria-button

npm i https://pkg.pr.new/@heroui/use-aria-button@6011

@heroui/use-aria-link

npm i https://pkg.pr.new/@heroui/use-aria-link@6011

@heroui/use-aria-modal-overlay

npm i https://pkg.pr.new/@heroui/use-aria-modal-overlay@6011

@heroui/use-aria-multiselect

npm i https://pkg.pr.new/@heroui/use-aria-multiselect@6011

@heroui/use-aria-overlay

npm i https://pkg.pr.new/@heroui/use-aria-overlay@6011

@heroui/use-callback-ref

npm i https://pkg.pr.new/@heroui/use-callback-ref@6011

@heroui/use-clipboard

npm i https://pkg.pr.new/@heroui/use-clipboard@6011

@heroui/use-data-scroll-overflow

npm i https://pkg.pr.new/@heroui/use-data-scroll-overflow@6011

@heroui/use-disclosure

npm i https://pkg.pr.new/@heroui/use-disclosure@6011

@heroui/use-draggable

npm i https://pkg.pr.new/@heroui/use-draggable@6011

@heroui/use-form-reset

npm i https://pkg.pr.new/@heroui/use-form-reset@6011

@heroui/use-image

npm i https://pkg.pr.new/@heroui/use-image@6011

@heroui/use-infinite-scroll

npm i https://pkg.pr.new/@heroui/use-infinite-scroll@6011

@heroui/use-intersection-observer

npm i https://pkg.pr.new/@heroui/use-intersection-observer@6011

@heroui/use-is-mobile

npm i https://pkg.pr.new/@heroui/use-is-mobile@6011

@heroui/use-is-mounted

npm i https://pkg.pr.new/@heroui/use-is-mounted@6011

@heroui/use-measure

npm i https://pkg.pr.new/@heroui/use-measure@6011

@heroui/use-pagination

npm i https://pkg.pr.new/@heroui/use-pagination@6011

@heroui/use-real-shape

npm i https://pkg.pr.new/@heroui/use-real-shape@6011

@heroui/use-ref-state

npm i https://pkg.pr.new/@heroui/use-ref-state@6011

@heroui/use-resize

npm i https://pkg.pr.new/@heroui/use-resize@6011

@heroui/use-safe-layout-effect

npm i https://pkg.pr.new/@heroui/use-safe-layout-effect@6011

@heroui/use-scroll-position

npm i https://pkg.pr.new/@heroui/use-scroll-position@6011

@heroui/use-ssr

npm i https://pkg.pr.new/@heroui/use-ssr@6011

@heroui/use-theme

npm i https://pkg.pr.new/@heroui/use-theme@6011

@heroui/use-update-effect

npm i https://pkg.pr.new/@heroui/use-update-effect@6011

@heroui/use-viewport-size

npm i https://pkg.pr.new/@heroui/use-viewport-size@6011

@heroui/aria-utils

npm i https://pkg.pr.new/@heroui/aria-utils@6011

@heroui/dom-animation

npm i https://pkg.pr.new/@heroui/dom-animation@6011

@heroui/framer-utils

npm i https://pkg.pr.new/@heroui/framer-utils@6011

@heroui/react-rsc-utils

npm i https://pkg.pr.new/@heroui/react-rsc-utils@6011

@heroui/react-utils

npm i https://pkg.pr.new/@heroui/react-utils@6011

@heroui/shared-icons

npm i https://pkg.pr.new/@heroui/shared-icons@6011

@heroui/shared-utils

npm i https://pkg.pr.new/@heroui/shared-utils@6011

@heroui/stories-utils

npm i https://pkg.pr.new/@heroui/stories-utils@6011

@heroui/test-utils

npm i https://pkg.pr.new/@heroui/test-utils@6011

commit: 1cbfc32

@wingkwong wingkwong marked this pull request as draft December 19, 2025 06:04
@wingkwong wingkwong changed the title fix(theme): add missing transition-duration fix(theme): default transition-duration Dec 19, 2025
@wingkwong wingkwong marked this pull request as ready for review December 20, 2025 13:50
@wingkwong wingkwong merged commit 086f6a1 into canary Dec 20, 2025
10 checks passed
@wingkwong wingkwong deleted the fix/issue-5992 branch December 20, 2025 14:01
jrgarciadev added a commit that referenced this pull request Dec 25, 2025
* fix(theme): hide password reveal button (#5990)

* fix(link): link overriding role (#5999)

* fix(link): allow overriding role

* chore(link): changeset

* chore(deps): upgrade react-aria (v1.14.0) (#5996)

* chore(deps): upgrade react-aria (v1.14.0)

* refactor(react): group client components

* fix(dropdown): keyDown test cases

* chore(react): rollback

* fix(theme): default transition-duration (#6011)

* fix(theme): default transitionDuration

* chore(deps): bump @heroui/theme peer dep

* ci(changesets): version packages (#5991)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Co-authored-by: Hayato Hasegawa <hase1225hayato@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
wingkwong added a commit that referenced this pull request Jan 29, 2026
* fix(theme): hide password reveal button (#5990)

* fix(link): link overriding role (#5999)

* fix(link): allow overriding role

* chore(link): changeset

* chore(deps): upgrade react-aria (v1.14.0) (#5996)

* chore(deps): upgrade react-aria (v1.14.0)

* refactor(react): group client components

* fix(dropdown): keyDown test cases

* chore(react): rollback

* fix(theme): default transition-duration (#6011)

* fix(theme): default transitionDuration

* chore(deps): bump @heroui/theme peer dep

* ci(changesets): version packages (#5991)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(use-image): resolve race condition with cached images on Firefox/Safari (#6041)

* fix(use-image): resolve race condition with cached images on Firefox/Safari

The bug occurred because event handlers (onload/onerror) were attached
AFTER setting the image src. For cached images, browsers fire onload
synchronously when src is set, causing the event to be missed and
images to remain stuck at opacity-0.

Changes:
- Attach handlers BEFORE setting src to catch synchronous callbacks
- Check both naturalWidth AND naturalHeight (per CodeRabbit review on #4523)
- Handle synchronous error callbacks for failed cached images
- Add comprehensive test coverage (15 tests) including:
  - Synchronous cached image success (Firefox/Safari race condition)
  - Synchronous cached image error
  - Dynamic src changes
  - All props (crossOrigin, srcSet, sizes, loading)
  - Callback invocation verification

Reproduction and investigation performed using Claude Opus 4.5.

Fixes #4534, #2259

* fix(use-image): add ignoreFallback to useCallback dependencies

Address CodeRabbit review feedback: the `ignoreFallback` prop was used
inside the `load` callback (line 104) but was missing from the dependency
array, creating a stale closure bug.

Without this fix, if `ignoreFallback` changes from `true` to `false`
dynamically, the `load` callback would retain the stale `true` value,
preventing the image from ever loading.

Changes:
- Add `ignoreFallback` to useCallback dependency array
- Add tests for dynamic `ignoreFallback` changes (both directions)
- Update changeset to document this fix

Verification performed using Claude Opus 4.5.

---------

Co-authored-by: Brian Meek <brian@current.space>

* fix(docs): broken links in Form page (#6077)

* fix(pagination): improve layout for large page counts (#6034)

* fix(pagination): improve layout for large page counts/style of paagination compnents

* fix(pagination): refine item sizing to balance small and large page numbers

* ci(changesets): add pagination sizing changeset

* fix(pagination): ensure cursor fully covers button without changing radius

* chore(changeset): revise message and add issue numbers

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(date-picker): open date-picker when clicking border (#6084)

* fix(date-picker): add pointer interaction to open date picker on wrapper click

* chore: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(accordion): click behaviour for dynamically generated accordion items (#6133)

* fix(accordion): add collection state

* chore: add changeset

* fix: update change set

* refactor(theme): remove flat dependency (#6157)

* chore(deps): remove flat library

* refactor(theme): replace flatten from flat

* chore: add changeset

* fix(listbox): prevent option focus from start/end content slots (#6060)

* fix(listbox): prevent option focus from start/end content slots

* test: add test code about when clicking
non-interactive slot content, and prevented focus leakage from interactive
start/end content such as buttons.

* docs: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(system-rsc): extendVariants & compound variants types (#5847)

* fix(extendVariants): return component type error

* fix(CompoundVariants): correct type inference for extended/compound variants and composition

* test: cover compound/extend inference; enforce CP required props

* fix(types): correct CompoundVariants class value inference

Replaces the conditional ClassProp logic with a simpler,
consistent form to fix incorrect slot value inference.

Before:
  ClassProp<S extends undefined ? ClassValue : ClassValue | SlotsClassValue<S>>

After:
  ClassProp<ClassValue | GetSuggestedValues<S>>

This ensures GetSuggestedValues<S> is used for slot-aware variants
and avoids duplicated conditional branches for undefined slots.

* fix(system-rsc): correct slot detection in getSlots()

* fix(types): make ExtendVariants props optional and guard V[key] with NonNullable

Simplifies the return type of ExtendVariants to ensure no required props
are enforced at the HOC level. This aligns with the intended API contract
where extended components expose all props as optional.

- All keys (CP ∪ V) are optional
- Preserve CP type hints and booleanized V values
- Added NonNullable<V[key]> guard to prevent undefined indexing

* test(extendVariants): add compoundVariants integration test

* fix(system-rsc): getSlots() brief JSDoc comment added

* test(extendVariants):  new styles - extended & fixed styles - original tests for slots component

* test(extendVariants): fixed slot component variant styles extended test

* fix(types): avoid leaking React internals by removing PropsWithoutRef

Replace PropsWithoutRef with explicit Exclude<'ref'> in mapped keys and
intersect with RefAttributes<InferRef<C>>. This prevents @types/react’s
internal UNDEFINED_VOID_ONLY from leaking into the public .d.ts and fixes
declaration emit for components like extended Autocomplete.

* chore(changeset): add patch for extendVariants and CompoundVariants type fix

* chore(system-rsc): add changeset for getSlots() slot detection fix

* refactor(types): unify slot value inference via GetSuggestedValues<S> for consistent variant typing

* fix(extendVariants): improved as-prop handling and exclude classNames from SuggestedVariants

* fix(system-rsc): add polymorphic 'as' prop support to extendVariants

* chore(system-rsc): add missing tests

---------

Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* chore(docs): update meta (#6168)

* ci(changesets): version packages (#6059)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Co-authored-by: Hayato Hasegawa <hase1225hayato@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: brianatdetections <brian@detections.ai>
Co-authored-by: Brian Meek <brian@current.space>
Co-authored-by: Dominik Hryshaiev <domhryshaiev@gmail.com>
Co-authored-by: creative-atish <149860680+atishkr25@users.noreply.github.com>
Co-authored-by: KyZy7 <29321162+KyZy7@users.noreply.github.com>
Co-authored-by: Deepansh Bhargava <deepansh940@gmail.com>
Co-authored-by: KumJungMin <37934668+KumJungMin@users.noreply.github.com>
Co-authored-by: Bohdan Kulinchenko <35272606+ITBoomBKStudio@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
jrgarciadev added a commit that referenced this pull request Feb 10, 2026
* fix(theme): hide password reveal button (#5990)

* fix(link): link overriding role (#5999)

* fix(link): allow overriding role

* chore(link): changeset

* chore(deps): upgrade react-aria (v1.14.0) (#5996)

* chore(deps): upgrade react-aria (v1.14.0)

* refactor(react): group client components

* fix(dropdown): keyDown test cases

* chore(react): rollback

* fix(theme): default transition-duration (#6011)

* fix(theme): default transitionDuration

* chore(deps): bump @heroui/theme peer dep

* ci(changesets): version packages (#5991)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(use-image): resolve race condition with cached images on Firefox/Safari (#6041)

* fix(use-image): resolve race condition with cached images on Firefox/Safari

The bug occurred because event handlers (onload/onerror) were attached
AFTER setting the image src. For cached images, browsers fire onload
synchronously when src is set, causing the event to be missed and
images to remain stuck at opacity-0.

Changes:
- Attach handlers BEFORE setting src to catch synchronous callbacks
- Check both naturalWidth AND naturalHeight (per CodeRabbit review on #4523)
- Handle synchronous error callbacks for failed cached images
- Add comprehensive test coverage (15 tests) including:
  - Synchronous cached image success (Firefox/Safari race condition)
  - Synchronous cached image error
  - Dynamic src changes
  - All props (crossOrigin, srcSet, sizes, loading)
  - Callback invocation verification

Reproduction and investigation performed using Claude Opus 4.5.

Fixes #4534, #2259

* fix(use-image): add ignoreFallback to useCallback dependencies

Address CodeRabbit review feedback: the `ignoreFallback` prop was used
inside the `load` callback (line 104) but was missing from the dependency
array, creating a stale closure bug.

Without this fix, if `ignoreFallback` changes from `true` to `false`
dynamically, the `load` callback would retain the stale `true` value,
preventing the image from ever loading.

Changes:
- Add `ignoreFallback` to useCallback dependency array
- Add tests for dynamic `ignoreFallback` changes (both directions)
- Update changeset to document this fix

Verification performed using Claude Opus 4.5.

---------

Co-authored-by: Brian Meek <brian@current.space>

* fix(docs): broken links in Form page (#6077)

* fix(pagination): improve layout for large page counts (#6034)

* fix(pagination): improve layout for large page counts/style of paagination compnents

* fix(pagination): refine item sizing to balance small and large page numbers

* ci(changesets): add pagination sizing changeset

* fix(pagination): ensure cursor fully covers button without changing radius

* chore(changeset): revise message and add issue numbers

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(date-picker): open date-picker when clicking border (#6084)

* fix(date-picker): add pointer interaction to open date picker on wrapper click

* chore: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(accordion): click behaviour for dynamically generated accordion items (#6133)

* fix(accordion): add collection state

* chore: add changeset

* fix: update change set

* refactor(theme): remove flat dependency (#6157)

* chore(deps): remove flat library

* refactor(theme): replace flatten from flat

* chore: add changeset

* fix(listbox): prevent option focus from start/end content slots (#6060)

* fix(listbox): prevent option focus from start/end content slots

* test: add test code about when clicking
non-interactive slot content, and prevented focus leakage from interactive
start/end content such as buttons.

* docs: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(system-rsc): extendVariants & compound variants types (#5847)

* fix(extendVariants): return component type error

* fix(CompoundVariants): correct type inference for extended/compound variants and composition

* test: cover compound/extend inference; enforce CP required props

* fix(types): correct CompoundVariants class value inference

Replaces the conditional ClassProp logic with a simpler,
consistent form to fix incorrect slot value inference.

Before:
  ClassProp<S extends undefined ? ClassValue : ClassValue | SlotsClassValue<S>>

After:
  ClassProp<ClassValue | GetSuggestedValues<S>>

This ensures GetSuggestedValues<S> is used for slot-aware variants
and avoids duplicated conditional branches for undefined slots.

* fix(system-rsc): correct slot detection in getSlots()

* fix(types): make ExtendVariants props optional and guard V[key] with NonNullable

Simplifies the return type of ExtendVariants to ensure no required props
are enforced at the HOC level. This aligns with the intended API contract
where extended components expose all props as optional.

- All keys (CP ∪ V) are optional
- Preserve CP type hints and booleanized V values
- Added NonNullable<V[key]> guard to prevent undefined indexing

* test(extendVariants): add compoundVariants integration test

* fix(system-rsc): getSlots() brief JSDoc comment added

* test(extendVariants):  new styles - extended & fixed styles - original tests for slots component

* test(extendVariants): fixed slot component variant styles extended test

* fix(types): avoid leaking React internals by removing PropsWithoutRef

Replace PropsWithoutRef with explicit Exclude<'ref'> in mapped keys and
intersect with RefAttributes<InferRef<C>>. This prevents @types/react’s
internal UNDEFINED_VOID_ONLY from leaking into the public .d.ts and fixes
declaration emit for components like extended Autocomplete.

* chore(changeset): add patch for extendVariants and CompoundVariants type fix

* chore(system-rsc): add changeset for getSlots() slot detection fix

* refactor(types): unify slot value inference via GetSuggestedValues<S> for consistent variant typing

* fix(extendVariants): improved as-prop handling and exclude classNames from SuggestedVariants

* fix(system-rsc): add polymorphic 'as' prop support to extendVariants

* chore(system-rsc): add missing tests

---------

Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* chore(docs): update meta (#6168)

* ci(changesets): version packages (#6059)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Co-authored-by: Hayato Hasegawa <hase1225hayato@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: brianatdetections <brian@detections.ai>
Co-authored-by: Brian Meek <brian@current.space>
Co-authored-by: Dominik Hryshaiev <domhryshaiev@gmail.com>
Co-authored-by: creative-atish <149860680+atishkr25@users.noreply.github.com>
Co-authored-by: KyZy7 <29321162+KyZy7@users.noreply.github.com>
Co-authored-by: Deepansh Bhargava <deepansh940@gmail.com>
Co-authored-by: KumJungMin <37934668+KumJungMin@users.noreply.github.com>
Co-authored-by: Bohdan Kulinchenko <35272606+ITBoomBKStudio@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
jrgarciadev added a commit that referenced this pull request Feb 18, 2026
* fix(theme): hide password reveal button (#5990)

* fix(link): link overriding role (#5999)

* fix(link): allow overriding role

* chore(link): changeset

* chore(deps): upgrade react-aria (v1.14.0) (#5996)

* chore(deps): upgrade react-aria (v1.14.0)

* refactor(react): group client components

* fix(dropdown): keyDown test cases

* chore(react): rollback

* fix(theme): default transition-duration (#6011)

* fix(theme): default transitionDuration

* chore(deps): bump @heroui/theme peer dep

* ci(changesets): version packages (#5991)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(use-image): resolve race condition with cached images on Firefox/Safari (#6041)

* fix(use-image): resolve race condition with cached images on Firefox/Safari

The bug occurred because event handlers (onload/onerror) were attached
AFTER setting the image src. For cached images, browsers fire onload
synchronously when src is set, causing the event to be missed and
images to remain stuck at opacity-0.

Changes:
- Attach handlers BEFORE setting src to catch synchronous callbacks
- Check both naturalWidth AND naturalHeight (per CodeRabbit review on #4523)
- Handle synchronous error callbacks for failed cached images
- Add comprehensive test coverage (15 tests) including:
  - Synchronous cached image success (Firefox/Safari race condition)
  - Synchronous cached image error
  - Dynamic src changes
  - All props (crossOrigin, srcSet, sizes, loading)
  - Callback invocation verification

Reproduction and investigation performed using Claude Opus 4.5.

Fixes #4534, #2259

* fix(use-image): add ignoreFallback to useCallback dependencies

Address CodeRabbit review feedback: the `ignoreFallback` prop was used
inside the `load` callback (line 104) but was missing from the dependency
array, creating a stale closure bug.

Without this fix, if `ignoreFallback` changes from `true` to `false`
dynamically, the `load` callback would retain the stale `true` value,
preventing the image from ever loading.

Changes:
- Add `ignoreFallback` to useCallback dependency array
- Add tests for dynamic `ignoreFallback` changes (both directions)
- Update changeset to document this fix

Verification performed using Claude Opus 4.5.

---------

Co-authored-by: Brian Meek <brian@current.space>

* fix(docs): broken links in Form page (#6077)

* fix(pagination): improve layout for large page counts (#6034)

* fix(pagination): improve layout for large page counts/style of paagination compnents

* fix(pagination): refine item sizing to balance small and large page numbers

* ci(changesets): add pagination sizing changeset

* fix(pagination): ensure cursor fully covers button without changing radius

* chore(changeset): revise message and add issue numbers

---------

Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* fix(date-picker): open date-picker when clicking border (#6084)

* fix(date-picker): add pointer interaction to open date picker on wrapper click

* chore: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(accordion): click behaviour for dynamically generated accordion items (#6133)

* fix(accordion): add collection state

* chore: add changeset

* fix: update change set

* refactor(theme): remove flat dependency (#6157)

* chore(deps): remove flat library

* refactor(theme): replace flatten from flat

* chore: add changeset

* fix(listbox): prevent option focus from start/end content slots (#6060)

* fix(listbox): prevent option focus from start/end content slots

* test: add test code about when clicking
non-interactive slot content, and prevented focus leakage from interactive
start/end content such as buttons.

* docs: add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>

* fix(system-rsc): extendVariants & compound variants types (#5847)

* fix(extendVariants): return component type error

* fix(CompoundVariants): correct type inference for extended/compound variants and composition

* test: cover compound/extend inference; enforce CP required props

* fix(types): correct CompoundVariants class value inference

Replaces the conditional ClassProp logic with a simpler,
consistent form to fix incorrect slot value inference.

Before:
  ClassProp<S extends undefined ? ClassValue : ClassValue | SlotsClassValue<S>>

After:
  ClassProp<ClassValue | GetSuggestedValues<S>>

This ensures GetSuggestedValues<S> is used for slot-aware variants
and avoids duplicated conditional branches for undefined slots.

* fix(system-rsc): correct slot detection in getSlots()

* fix(types): make ExtendVariants props optional and guard V[key] with NonNullable

Simplifies the return type of ExtendVariants to ensure no required props
are enforced at the HOC level. This aligns with the intended API contract
where extended components expose all props as optional.

- All keys (CP ∪ V) are optional
- Preserve CP type hints and booleanized V values
- Added NonNullable<V[key]> guard to prevent undefined indexing

* test(extendVariants): add compoundVariants integration test

* fix(system-rsc): getSlots() brief JSDoc comment added

* test(extendVariants):  new styles - extended & fixed styles - original tests for slots component

* test(extendVariants): fixed slot component variant styles extended test

* fix(types): avoid leaking React internals by removing PropsWithoutRef

Replace PropsWithoutRef with explicit Exclude<'ref'> in mapped keys and
intersect with RefAttributes<InferRef<C>>. This prevents @types/react’s
internal UNDEFINED_VOID_ONLY from leaking into the public .d.ts and fixes
declaration emit for components like extended Autocomplete.

* chore(changeset): add patch for extendVariants and CompoundVariants type fix

* chore(system-rsc): add changeset for getSlots() slot detection fix

* refactor(types): unify slot value inference via GetSuggestedValues<S> for consistent variant typing

* fix(extendVariants): improved as-prop handling and exclude classNames from SuggestedVariants

* fix(system-rsc): add polymorphic 'as' prop support to extendVariants

* chore(system-rsc): add missing tests

---------

Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: WK Wong <wingkwong.code@gmail.com>

* chore(docs): update meta (#6168)

* ci(changesets): version packages (#6059)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

* fix(system-rsc): extendVariants rendering behavior with as (#6215)

* fix(system-rsc): fix components rendering with 'as' prop

* fix(system-rsc): fix compoundVariants and slots inheritance in extendVariants

* fix(system-rsc): extendVariants test file cleaned

* chore(deps): bump RA dependencies (#6221)

* chore(deps): bump RA dependencies

* chore(date-picker): revise test cases

* fix(button): correct disableRipple prop precedence (#6199)

* ci(changesets): version packages (#6227)

Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>

---------

Co-authored-by: Hayato Hasegawa <hase1225hayato@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Junior Garcia <jrgarciadev@gmail.com>
Co-authored-by: brianatdetections <brian@detections.ai>
Co-authored-by: Brian Meek <brian@current.space>
Co-authored-by: Dominik Hryshaiev <domhryshaiev@gmail.com>
Co-authored-by: creative-atish <149860680+atishkr25@users.noreply.github.com>
Co-authored-by: KyZy7 <29321162+KyZy7@users.noreply.github.com>
Co-authored-by: Deepansh Bhargava <deepansh940@gmail.com>
Co-authored-by: KumJungMin <37934668+KumJungMin@users.noreply.github.com>
Co-authored-by: Bohdan Kulinchenko <35272606+ITBoomBKStudio@users.noreply.github.com>
Co-authored-by: doki- <1335902682@qq.com>
Co-authored-by: Chris Nowak <krzysztofmareknowak@gmail.com>
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.

[BUG] - Animations/transitions not working in components like Switch [BUG] - Problem with transitions in the version (2.8.6)

1 participant