import { createRoot } from 'octane'
import {
createAtom,
useAtom,
useSelector,
} from '@tanstack/octane-store'
const countAtom = createAtom(0)
function App() @{
<main>
<h1>Octane Atom Hooks</h1>
<p>
This example creates a module-level atom and reads and updates it with
the Octane hooks.
</p>
<AtomValuePanel />
<AtomButtons />
<AtomStepper />
</main>
}
function AtomValuePanel() @{
const count = useSelector(countAtom)
<p>Total: {count}</p>
}
function AtomButtons() @{
<div>
<button type="button" onClick={() => countAtom.set((prev) => prev + 1)}>
Increment
</button>
<button type="button" onClick={() => countAtom.set(0)}>
Reset
</button>
</div>
}
function AtomStepper() @{
const [count, setCount] = useAtom(countAtom)
<div>
<p>Editable count: {count}</p>
<button type="button" onClick={() => setCount((prev) => prev + 5)}>
Add 5 with useAtom
</button>
</div>
}
const target = document.getElementById('root')
if (!target) throw new Error('Missing #root')
createRoot(target).render(App)