Skip to content

ci(changesets): 📦 version packages#6059

Merged
wingkwong merged 1 commit into
canaryfrom
changeset-release/canary
Jan 29, 2026
Merged

ci(changesets): 📦 version packages#6059
wingkwong merged 1 commit into
canaryfrom
changeset-release/canary

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented Dec 27, 2025

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to canary, this PR will be updated.

Releases

@heroui/accordion@2.2.27

Patch Changes

@heroui/alert@2.2.30

Patch Changes

  • Updated dependencies []:
    • @heroui/button@2.2.30

@heroui/autocomplete@2.3.32

Patch Changes

  • Updated dependencies [7814df7]:
    • @heroui/listbox@2.3.29
    • @heroui/button@2.2.30
    • @heroui/form@2.1.30
    • @heroui/input@2.4.31
    • @heroui/popover@2.3.30
    • @heroui/scroll-shadow@2.3.19
    • @heroui/aria-utils@2.2.27

@heroui/avatar@2.2.25

Patch Changes

  • #6041 5ec842b Thanks @brianatdetections! - Fix race condition in use-image hook that caused cached images to remain invisible (stuck at opacity-0) on Firefox and Safari.

    Root Cause:
    Event handlers (onload/onerror) were attached AFTER setting the image src. For cached images, the browser fires onload synchronously when src is set, causing the event to be missed. This is particularly prevalent in Firefox and Safari due to their JavaScript execution timing characteristics.

    Solution:

    • Attach onload/onerror handlers BEFORE setting src
    • Check both naturalWidth AND naturalHeight (per CodeRabbit review feedback on fix(use-image): load images after props change #4523)
    • Handle synchronous error callbacks for failed cached images
    • Include ignoreFallback in useCallback dependencies to prevent stale closures when prop changes dynamically
    • Add comprehensive test coverage including synchronous callback scenarios and dynamic ignoreFallback changes

    Fixes [BUG] - Cached avatar don't reset opacity 0 #4534, [BUG] - Image component: loading="lazy" not working #2259

  • Updated dependencies [5ec842b]:

    • @heroui/use-image@2.1.14

@heroui/button@2.2.30

Patch Changes

  • Updated dependencies []:
    • @heroui/spinner@2.2.27
    • @heroui/ripple@2.2.21

@heroui/calendar@2.2.30

Patch Changes

  • Updated dependencies []:
    • @heroui/button@2.2.30
    • @heroui/framer-utils@2.1.26

@heroui/checkbox@2.3.30

Patch Changes

  • Updated dependencies []:
    • @heroui/form@2.1.30

@heroui/code@2.2.23

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22

@heroui/date-input@2.3.30

Patch Changes

  • Updated dependencies []:
    • @heroui/form@2.1.30

@heroui/date-picker@2.3.31

Patch Changes

@heroui/divider@2.2.22

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22

@heroui/drawer@2.2.27

Patch Changes

  • Updated dependencies []:
    • @heroui/modal@2.2.27
    • @heroui/framer-utils@2.1.26

@heroui/dropdown@2.3.30

Patch Changes

  • Updated dependencies []:
    • @heroui/menu@2.2.29
    • @heroui/popover@2.3.30
    • @heroui/aria-utils@2.2.27

@heroui/form@2.1.30

Patch Changes

  • Updated dependencies [5549167, 1f08506]:
    • @heroui/theme@2.4.26
    • @heroui/system@2.4.26

@heroui/image@2.2.19

Patch Changes

  • #6041 5ec842b Thanks @brianatdetections! - Fix race condition in use-image hook that caused cached images to remain invisible (stuck at opacity-0) on Firefox and Safari.

    Root Cause:
    Event handlers (onload/onerror) were attached AFTER setting the image src. For cached images, the browser fires onload synchronously when src is set, causing the event to be missed. This is particularly prevalent in Firefox and Safari due to their JavaScript execution timing characteristics.

    Solution:

    • Attach onload/onerror handlers BEFORE setting src
    • Check both naturalWidth AND naturalHeight (per CodeRabbit review feedback on fix(use-image): load images after props change #4523)
    • Handle synchronous error callbacks for failed cached images
    • Include ignoreFallback in useCallback dependencies to prevent stale closures when prop changes dynamically
    • Add comprehensive test coverage including synchronous callback scenarios and dynamic ignoreFallback changes

    Fixes [BUG] - Cached avatar don't reset opacity 0 #4534, [BUG] - Image component: loading="lazy" not working #2259

  • Updated dependencies [5ec842b]:

    • @heroui/use-image@2.1.14

@heroui/input@2.4.31

Patch Changes

  • Updated dependencies []:
    • @heroui/form@2.1.30

@heroui/input-otp@2.1.30

Patch Changes

  • Updated dependencies []:
    • @heroui/form@2.1.30

@heroui/kbd@2.2.24

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22

@heroui/listbox@2.3.29

Patch Changes

@heroui/menu@2.2.29

Patch Changes

  • Updated dependencies []:
    • @heroui/divider@2.2.22
    • @heroui/aria-utils@2.2.27

@heroui/modal@2.2.27

Patch Changes

  • Updated dependencies []:
    • @heroui/framer-utils@2.1.26

@heroui/navbar@2.2.28

Patch Changes

  • Updated dependencies []:
    • @heroui/framer-utils@2.1.26

@heroui/number-input@2.0.21

Patch Changes

  • Updated dependencies []:
    • @heroui/button@2.2.30
    • @heroui/form@2.1.30

@heroui/popover@2.3.30

Patch Changes

  • Updated dependencies []:
    • @heroui/button@2.2.30
    • @heroui/aria-utils@2.2.27
    • @heroui/framer-utils@2.1.26

@heroui/radio@2.3.30

Patch Changes

  • Updated dependencies []:
    • @heroui/form@2.1.30

@heroui/select@2.4.31

Patch Changes

  • Updated dependencies [7814df7]:
    • @heroui/listbox@2.3.29
    • @heroui/spinner@2.2.27
    • @heroui/form@2.1.30
    • @heroui/popover@2.3.30
    • @heroui/scroll-shadow@2.3.19
    • @heroui/aria-utils@2.2.27

@heroui/slider@2.4.27

Patch Changes

  • Updated dependencies []:
    • @heroui/tooltip@2.2.27

@heroui/snippet@2.2.31

Patch Changes

  • Updated dependencies []:
    • @heroui/button@2.2.30
    • @heroui/tooltip@2.2.27

@heroui/spacer@2.2.23

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22

@heroui/spinner@2.2.27

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22
    • @heroui/system@2.4.26

@heroui/table@2.2.30

Patch Changes

  • Updated dependencies []:
    • @heroui/checkbox@2.3.30

@heroui/tabs@2.2.27

Patch Changes

  • Updated dependencies []:
    • @heroui/aria-utils@2.2.27

@heroui/toast@2.0.20

Patch Changes

  • Updated dependencies []:
    • @heroui/spinner@2.2.27

@heroui/tooltip@2.2.27

Patch Changes

  • Updated dependencies []:
    • @heroui/aria-utils@2.2.27
    • @heroui/framer-utils@2.1.26

@heroui/user@2.2.25

Patch Changes

  • Updated dependencies [5ec842b]:
    • @heroui/avatar@2.2.25

@heroui/react@2.8.8

Patch Changes

  • Updated dependencies [5ec842b, 7814df7, d5a5c77, 96b1f49, 5549167, 1f08506]:
    • @heroui/image@2.2.19
    • @heroui/avatar@2.2.25
    • @heroui/listbox@2.3.29
    • @heroui/date-picker@2.3.31
    • @heroui/accordion@2.2.27
    • @heroui/theme@2.4.26
    • @heroui/card@2.2.27
    • @heroui/drawer@2.2.27
    • @heroui/dropdown@2.3.30
    • @heroui/autocomplete@2.3.32
    • @heroui/badge@2.2.18
    • @heroui/chip@2.2.24
    • @heroui/navbar@2.2.28
    • @heroui/select@2.4.31
    • @heroui/user@2.2.25
    • @heroui/code@2.2.23
    • @heroui/divider@2.2.22
    • @heroui/kbd@2.2.24
    • @heroui/spacer@2.2.23
    • @heroui/spinner@2.2.27
    • @heroui/system@2.4.26
    • @heroui/alert@2.2.30
    • @heroui/breadcrumbs@2.2.24
    • @heroui/button@2.2.30
    • @heroui/calendar@2.2.30
    • @heroui/checkbox@2.3.30
    • @heroui/date-input@2.3.30
    • @heroui/form@2.1.30
    • @heroui/input@2.4.31
    • @heroui/input-otp@2.1.30
    • @heroui/link@2.2.25
    • @heroui/menu@2.2.29
    • @heroui/modal@2.2.27
    • @heroui/number-input@2.0.21
    • @heroui/pagination@2.2.26
    • @heroui/popover@2.3.30
    • @heroui/progress@2.2.24
    • @heroui/radio@2.3.30
    • @heroui/ripple@2.2.21
    • @heroui/scroll-shadow@2.3.19
    • @heroui/skeleton@2.2.18
    • @heroui/slider@2.4.27
    • @heroui/snippet@2.2.31
    • @heroui/switch@2.2.26
    • @heroui/table@2.2.30
    • @heroui/tabs@2.2.27
    • @heroui/toast@2.0.20
    • @heroui/tooltip@2.2.27
    • @heroui/framer-utils@2.1.26

@heroui/system@2.4.26

Patch Changes

  • Updated dependencies [1a2635b]:
    • @heroui/system-rsc@2.3.22

@heroui/system-rsc@2.3.22

Patch Changes

  • #5847 1a2635b Thanks @ITBoomBKStudio! - fix(system-rsc): correct type inference in extendVariants and CompoundVariants & correct slot detection in getSlots() to ensure proper slot key extraction and consistent compoundVariants behavior.

@heroui/theme@2.4.26

Patch Changes

@heroui/use-image@2.1.14

Patch Changes

  • #6041 5ec842b Thanks @brianatdetections! - Fix race condition in use-image hook that caused cached images to remain invisible (stuck at opacity-0) on Firefox and Safari.

    Root Cause:
    Event handlers (onload/onerror) were attached AFTER setting the image src. For cached images, the browser fires onload synchronously when src is set, causing the event to be missed. This is particularly prevalent in Firefox and Safari due to their JavaScript execution timing characteristics.

    Solution:

    • Attach onload/onerror handlers BEFORE setting src
    • Check both naturalWidth AND naturalHeight (per CodeRabbit review feedback on fix(use-image): load images after props change #4523)
    • Handle synchronous error callbacks for failed cached images
    • Include ignoreFallback in useCallback dependencies to prevent stale closures when prop changes dynamically
    • Add comprehensive test coverage including synchronous callback scenarios and dynamic ignoreFallback changes

    Fixes [BUG] - Cached avatar don't reset opacity 0 #4534, [BUG] - Image component: loading="lazy" not working #2259

@heroui/aria-utils@2.2.27

Patch Changes

  • Updated dependencies []:
    • @heroui/system@2.4.26

@heroui/framer-utils@2.1.26

Patch Changes

  • Updated dependencies []:
    • @heroui/system@2.4.26

@vercel
Copy link
Copy Markdown

vercel Bot commented Dec 27, 2025

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

Project Deployment Review Updated (UTC)
heroui Ready Ready Preview, Comment Jan 28, 2026 3:59pm
heroui-sb Ready Ready Preview, Comment Jan 28, 2026 3:59pm

Request Review

@wingkwong wingkwong added this to the v2.8.8 milestone Dec 27, 2025
@wingkwong wingkwong self-assigned this Dec 27, 2025
@github-actions github-actions Bot force-pushed the changeset-release/canary branch from 0fe43f5 to a0a8137 Compare January 4, 2026 14:32
@github-actions github-actions Bot force-pushed the changeset-release/canary branch from a0a8137 to eb0e674 Compare January 6, 2026 16:43
@github-actions github-actions Bot force-pushed the changeset-release/canary branch from eb0e674 to 8bebbb6 Compare January 27, 2026 09:57
@github-actions github-actions Bot force-pushed the changeset-release/canary branch from 8bebbb6 to a489f79 Compare January 28, 2026 12:52
@github-actions github-actions Bot force-pushed the changeset-release/canary branch from a489f79 to 77af1d5 Compare January 28, 2026 15:49
@wingkwong wingkwong merged commit f37e108 into canary Jan 29, 2026
3 checks passed
@wingkwong wingkwong deleted the changeset-release/canary branch January 29, 2026 15:41
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] - Cached avatar don't reset opacity 0

2 participants