You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
04aba51: Migrate the build toolchain from tsdown to Vite+ (vp pack). The ESM build now emits .mjs (previously .js) and its types .d.mts; the CommonJS build (.cjs/.d.cts) is unchanged. Each package's exports, main, module, and types fields are updated to match, so normal package imports resolve exactly as before — only direct-to-dist/index.js deep imports are affected.
This also migrates lint/format from Biome to oxlint/oxfmt (vp lint / vp fmt), the task runner from Turbo to pnpm, and bumps Vitest 3 → 4. Node 24+ is now required.
ac257f6: Fix Overflow flicker, "vanishing item" bug, and infinite-loop pitfall when
parent re-renders without memoizing the items array.
useOverflow now stores partition state as a single COUNT (number of
visible items) instead of arrays of item references. visibleItems and hiddenItems are derived from the items prop + count at render time via useMemo. This decouples internal state from items prop identity:
Items reference churn (parent passing a freshly-built array on every
render) no longer triggers any state update — partition state only
changes when the layout demands it.
No flicker on parent re-renders.
Length changes still reset and re-measure, so adding/removing items
works correctly.
The rendered visibleItems always reflect the latest items prop, never
stale references from a previous reset.
Symptom that motivated this: a tab list built on top of Overflow would
visually jitter on every tab switch, and a tab near the visible/hidden
boundary would appear to "vanish and come back" as the previous reset-
based implementation re-ran the shrink loop on every parent re-render.
Same architecture as react-overflow-list (BluePrint OverflowList) and
similar proven libraries.
Also adds a regression test for the no-flicker behavior and several new
component-level tests covering empty items, omitted renderOverflow, and
ref forwarding (function + object refs).
ad6a4aa: Rename Overflow component renderer props for clarity.
renderItem (unchanged from original API)
renderMore → renderOverflow
Earlier 3.2.x releases shipped these props but had broken type imports due to a
build issue (hashed .d.ts filenames), so adoption is expected to be minimal.
The rename clarifies that the prop renders the overflow indicator slot, not
literally "more" content.
ad6a4aa: Fix TypeScript imports broken in previous releases due to hashed .d.ts filenames.
Previous releases shipped dist/index-{hash}.d.ts and dist/index-{hash}.d.cts while package.jsontypes and exports.types pointed at dist/index.d.ts — causing TS2306 / TS2307 errors in any consumer importing types. Root cause was a bug in rolldown-plugin-dts@0.13.x (transitive of tsdown@0.12.x) where entry chunks fell
through to the hashed-filename template instead of the flat one.
Resolved by bumping tsdown to ^0.21.10 (which pulls rolldown-plugin-dts@^0.23.x
containing the fix from sxzz/rolldown-plugin-dts#132). Build now produces flat dist/index.d.ts and dist/index.d.cts, restoring type resolution for all consumers.
fbc449f: Add @emotion/jest to the test setup for necto-react-components. Extends vitest's expect with toHaveStyleRule so tests can assert emotion-generated CSS rules and pseudo-element styles. Also fixes ShadowBevel empty-string fallback for boxShadow and borderRadius props, and adds comprehensive static-style coverage for the component.
36723b4: Breaking: Remove Emotion css prop from ButtonProps and Primitive. The css prop and @emotion/react dependency have been removed entirely; styling now uses @emotion/styled exclusively.
Breaking: Remove jsxImportSource: "@emotion/react" from tsconfig — the global css prop on JSX elements is no longer available.
Internally, Box and ShadowBevel have been migrated from SCSS modules to @emotion/styled, allowing the entire SCSS/PostCSS build pipeline (sass, sass-embedded, postcss, postcss-modules, esbuild-sass-plugin) to be removed.
New:capitalize added to @necto/strings — uppercases the first character of a string, empty-string safe.
0284395: Breaking: Remove Emotion css prop from ButtonProps and Primitive. The css prop and @emotion/react dependency have been removed entirely; styling now uses @emotion/styled exclusively.
Breaking: Remove jsxImportSource: "@emotion/react" from tsconfig — the global css prop on JSX elements is no longer available.
Internally, Box and ShadowBevel have been migrated from SCSS modules to @emotion/styled, allowing the entire SCSS/PostCSS build pipeline to be removed. Primitive now uses createElement directly and lazily builds its tag-component map via a plain for...of loop.
New:capitalize added to @necto/strings — uppercases the first character of a string, empty-string safe.
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:
any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you click the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: pnpm-lock.yaml
Scope: all 20 workspace projects
Progress: resolved 1, reused 0, downloaded 0, added 0
Progress: resolved 12, reused 0, downloaded 0, added 0
/tmp/renovate/repos/github/sprocket-ui/NodeKit/packages/@sprocketui-react/sprocketui-react-progress:
ERR_PNPM_FETCH_404 GET https://registry.npmjs.org/@necto-react%2Fhelpers: Not Found - 404
This error happened while installing a direct dependency of /tmp/renovate/repos/github/sprocket-ui/NodeKit/packages/@sprocketui-react/sprocketui-react-progress
@necto-react/helpers is not in the npm registry, or you have no permission to fetch it.
No authorization header was set for the request.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.4.25→3.3.8Warning
Some dependencies could not be looked up. Check the warning logs for more information.
Release Notes
nectoutil/NodeKit (@necto-react/components)
v3.3.8Compare Source
Patch Changes
cb2fb22]v3.3.7Compare Source
Patch Changes
956c338]v3.3.6Compare Source
Patch Changes
c5fe910]v3.3.5Compare Source
Patch Changes
839ae42]v3.3.4Compare Source
Patch Changes
0849e9a]v3.3.3Patch Changes
04aba51: Migrate the build toolchain from tsdown to Vite+ (vp pack). The ESM build now emits.mjs(previously.js) and its types.d.mts; the CommonJS build (.cjs/.d.cts) is unchanged. Each package'sexports,main,module, andtypesfields are updated to match, so normal package imports resolve exactly as before — only direct-to-dist/index.jsdeep imports are affected.This also migrates lint/format from Biome to oxlint/oxfmt (
vp lint/vp fmt), the task runner from Turbo to pnpm, and bumps Vitest 3 → 4. Node 24+ is now required.Updated dependencies [
04aba51]v3.3.2Patch Changes
d435091]v3.3.1Patch Changes
ac257f6: Fix Overflow flicker, "vanishing item" bug, and infinite-loop pitfall whenparent re-renders without memoizing the items array.
useOverflownow stores partition state as a single COUNT (number ofvisible items) instead of arrays of item references.
visibleItemsandhiddenItemsare derived from theitemsprop + count at render time viauseMemo. This decouples internal state from items prop identity:render) no longer triggers any state update — partition state only
changes when the layout demands it.
works correctly.
visibleItemsalways reflect the latest items prop, neverstale references from a previous reset.
Symptom that motivated this: a tab list built on top of Overflow would
visually jitter on every tab switch, and a tab near the visible/hidden
boundary would appear to "vanish and come back" as the previous reset-
based implementation re-ran the shrink loop on every parent re-render.
Same architecture as
react-overflow-list(BluePrint OverflowList) andsimilar proven libraries.
Also adds a regression test for the no-flicker behavior and several new
component-level tests covering empty items, omitted
renderOverflow, andref forwarding (function + object refs).
Updated dependencies [
ac257f6]v3.3.0Minor Changes
ad6a4aa: Rename Overflow component renderer props for clarity.renderItem(unchanged from original API)renderMore→renderOverflowEarlier 3.2.x releases shipped these props but had broken type imports due to a
build issue (hashed
.d.tsfilenames), so adoption is expected to be minimal.The rename clarifies that the prop renders the overflow indicator slot, not
literally "more" content.
Migration:
Patch Changes
ad6a4aa: Fix TypeScript imports broken in previous releases due to hashed.d.tsfilenames.Previous releases shipped
dist/index-{hash}.d.tsanddist/index-{hash}.d.ctswhilepackage.jsontypesandexports.typespointed atdist/index.d.ts— causingTS2306/TS2307errors in any consumer importing types. Root cause was a bug inrolldown-plugin-dts@0.13.x(transitive oftsdown@0.12.x) where entry chunks fellthrough to the hashed-filename template instead of the flat one.
Resolved by bumping
tsdownto^0.21.10(which pullsrolldown-plugin-dts@^0.23.xcontaining the fix from sxzz/rolldown-plugin-dts#132). Build now produces flat
dist/index.d.tsanddist/index.d.cts, restoring type resolution for all consumers.Updated dependencies [
ad6a4aa]v3.2.0Minor Changes
1633aec: Released to backfill changesPatch Changes
1633aec]v3.0.4Patch Changes
023e73e]v3.0.3Compare Source
Patch Changes
9eb1854]v3.0.2Compare Source
Patch Changes
70f03f1]v3.0.1Patch Changes
fbc449f: Add@emotion/jestto the test setup fornecto-react-components. Extends vitest'sexpectwithtoHaveStyleRuleso tests can assert emotion-generated CSS rules and pseudo-element styles. Also fixesShadowBevelempty-string fallback forboxShadowandborderRadiusprops, and adds comprehensive static-style coverage for the component.v3.0.0Major Changes
36723b4: Breaking: Remove Emotioncssprop fromButtonPropsandPrimitive. Thecssprop and@emotion/reactdependency have been removed entirely; styling now uses@emotion/styledexclusively.Breaking: Remove
jsxImportSource: "@emotion/react"from tsconfig — the globalcssprop on JSX elements is no longer available.Internally,
BoxandShadowBevelhave been migrated from SCSS modules to@emotion/styled, allowing the entire SCSS/PostCSS build pipeline (sass,sass-embedded,postcss,postcss-modules,esbuild-sass-plugin) to be removed.New:
capitalizeadded to@necto/strings— uppercases the first character of a string, empty-string safe.Patch Changes
36723b4]v2.0.0Major Changes
0284395: Breaking: Remove Emotioncssprop fromButtonPropsandPrimitive. Thecssprop and@emotion/reactdependency have been removed entirely; styling now uses@emotion/styledexclusively.Breaking: Remove
jsxImportSource: "@emotion/react"from tsconfig — the globalcssprop on JSX elements is no longer available.Internally,
BoxandShadowBevelhave been migrated from SCSS modules to@emotion/styled, allowing the entire SCSS/PostCSS build pipeline to be removed.Primitivenow usescreateElementdirectly and lazily builds its tag-component map via a plainfor...ofloop.New:
capitalizeadded to@necto/strings— uppercases the first character of a string, empty-string safe.Patch Changes
0284395]Configuration
📅 Schedule: (in timezone America/New_York)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.