@@ -5,7 +5,11 @@ A universal and lightweight state management library with a clean, stateless API
55## 📦 Installation
66
77``` bash
8+ # Universal (works everywhere)
89npm install @neabyte/stateless-js
10+
11+ # React (with automatic re-renders)
12+ npm install @neabyte/stateless-js react
913```
1014
1115## 🔧 Module Support
@@ -15,12 +19,14 @@ npm install @neabyte/stateless-js
1519// CommonJS
1620const { createStateless, useStateless } = require (' @neabyte/stateless-js' )
1721
18- // ESM (ES Modules)
22+ // React (automatic re-renders)
23+ import { useReactStateless } from ' @neabyte/stateless-js/react'
24+
25+ // Universal (works everywhere)
1926import { createStateless , useStateless } from ' @neabyte/stateless-js'
2027
2128// TypeScript types
2229import type { StateSetter , StateValue } from ' @neabyte/stateless-js'
23-
2430```
2531
2632### 🌐 Browser
@@ -38,7 +44,7 @@ import type { StateSetter, StateValue } from '@neabyte/stateless-js'
3844
3945## 🚀 Usage
4046
41- ### 📝 Basic Usage
47+ ### 📝 Universal Usage
4248
4349``` typescript
4450import { createStateless , useStateless } from ' @neabyte/stateless-js'
@@ -52,19 +58,44 @@ setCount(current => current + 1)
5258console .log (count .value ) // 1
5359```
5460
55- ### 🔄 Using Existing States
61+ ### ⚛️ React Usage
5662
5763``` typescript
58- // Create state
59- const [setUser, user] = createStateless (' user' , { name: ' John' , age: 25 })
64+ import { useReactStateless } from ' @neabyte/stateless-js/react'
65+
66+ function Counter() {
67+ const [setCount, count] = useReactStateless (' counter' , 0 )
68+ return (
69+ <div >
70+ <p >Count : {count}</p >
71+ < button onClick = {() => setCount(c = > c + 1 )}>
72+ Increment
73+ < / button >
74+ < / div >
75+ )
76+ }
77+ ```
78+
79+ ### 🔄 State Sharing (Universal & React)
6080
61- // Use existing state (reuses the same state)
81+ ``` typescript
82+ // Universal
83+ const [setUser, user] = createStateless (' user' , { name: ' John' , age: 25 })
6284const [setUser2, user2] = useStateless (' user' , { name: ' Default' , age: 0 })
6385console .log (user .value === user2 .value ) // true - same state
6486
65- // Both references update the same state
66- setUser (current => ({ ... current , age: 26 }))
67- console .log (user2 .value .age ) // 26
87+ // React - Multiple components share the same state
88+ function UserProfile() {
89+ const [setUser, user] = useReactStateless (' user' , { name: ' John' , age: 25 })
90+ return <div >Name : {user.name }, Age : {user.age }< / div >
91+ }
92+
93+ function UserEditor() {
94+ const [setUser, user] = useReactStateless (' user' , { name: ' Default' , age: 0 })
95+ return <button onClick = {() => setUser (u = > ({ ... u , age: u .age + 1 }))}>
96+ Increase Age
97+ </button >
98+ }
6899```
69100
70101### 🎯 Different Data Types
@@ -120,27 +151,41 @@ try {
120151
121152## 📚 API Reference
122153
123- ### ` createStateless<T>(id: StateId, initialState: T): StatelessReturn<T> `
154+ ### Universal Functions
155+
156+ #### ` createStateless <T >(id : StateId , initialState : T ): StatelessReturn <T >`
124157
125158Creates a new state with the given ID and initial value.
126159
127160- ` id ` : Unique identifier (string or number)
128161- ` initialState ` : Initial value for the state
129162- Returns: Tuple ` [StateSetter < T > , StateValue < T > ]`
130163
131- ### ` useStateless<T>(id: StateId, fallbackState: T): StatelessReturn<T> `
164+ #### ` useStateless <T >(id : StateId , fallbackState : T ): StatelessReturn <T >`
132165
133166Uses existing state if it exists, otherwise creates a new one.
134167
135168- ` id ` : Unique identifier (string or number)
136169- ` fallbackState ` : Value to use if state doesn't exist
137170- Returns: Tuple ` [StateSetter < T > , StateValue < T > ]`
138171
139- ### ` StateSetter<T> `
172+ ### React Functions
173+
174+ #### ` useReactStateless <T >(id : StateId , initialValue : T ): [StateSetter < T > , T ]`
175+
176+ React hook that provides automatic re-renders when state changes.
177+
178+ - ` id ` : Unique identifier (string or number)
179+ - ` initialValue ` : Initial value for the state
180+ - Returns: Tuple ` [StateSetter < T > , T ]` (direct value, not StateValue object)
181+
182+ ### Types
183+
184+ #### ` StateSetter <T >`
140185
141186Function to update state: ` (updater : StateUpdater <T >) => void `
142187
143- ### ` StateValue<T> `
188+ #### ` StateValue <T >`
144189
145190Object with:
146191- ` value ` : Current state value (readonly)
0 commit comments