@luminelabs/react-toolkit
v0.1.1
Published
Personal React hooks, utilities & factories (internal / experimental).
Readme
@luminelabs/react-toolkit
⚠️ Experimental / Internal Use
Primarily intended for personal and internal use. It may change, break, or be restructured at any time. Don't rely on it for public projects unless you're prepared to maintain your own fork. Issues/feature requests may be closed without response.
React-level primitives — hooks, small utilities, and factories. ESM-only. Ships types.
Install
npm install @luminelabs/react-toolkit- Peer:
react^18 || ^19. - Optional peer:
@floating-ui/react(>=0.26.0) — only needed if you import the./floatingentry. - Depends on
@luminelabs/toolkitandes-toolkit.
Entry points
| Import | Holds |
| ------------------------------------- | -------------------------------------------------------------------------------------------- |
| @luminelabs/react-toolkit | hooks, utils and factories re-exported (floating stays separate) |
| @luminelabs/react-toolkit/hooks | the hooks |
| @luminelabs/react-toolkit/utils | non-hook helpers (mergeRefs, extractProps, castNodeToBoolean, castDataPropToBoolean) |
| @luminelabs/react-toolkit/factories | createSlots, createStorageHook, createBreakpointHook |
| @luminelabs/react-toolkit/floating | useFloatingSizeCapture (requires the optional @floating-ui/react peer) |
The floating entry is isolated on its own subpath so the core import graph never pulls in @floating-ui.
Hooks (overview)
State & refs (useControllableState, useLatestRef, usePreviousRef, useLazyRef, useForceRerender), events (useEventListener, useClickOutside, useEvent), layout & size (useElementSize, useResizeObserver, useSizeCapture, useIsTruncated, useIntersectionObserver, useIsomorphicLayoutEffect, useScheduleLayoutEffect), media (useMediaQuery), storage (useLocalStorage, useSessionStorage), debounce (useDebounceCallback, useDebounceValue), ids (useId, createUseId), and dev guards (useControlledSwitchWarning).
import { useEventListener, useControllableState } from "@luminelabs/react-toolkit"The set changes often — check the source or your editor's autocomplete for the current list.
License
MIT © Lumine Labs
