chore: initialize project

This commit is contained in:
2026-04-03 16:28:55 +03:00
commit afb7d70855
42 changed files with 10073 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
import { EventClient } from '@tanstack/devtools-event-client'
import { useState, useEffect } from 'react'
import { store, fullName } from './demo-store'
type EventMap = {
'store-devtools:state': {
firstName: string
lastName: string
fullName: string
}
}
class StoreDevtoolsEventClient extends EventClient<EventMap> {
constructor() {
super({
pluginId: 'store-devtools',
})
}
}
const sdec = new StoreDevtoolsEventClient()
store.subscribe(() => {
sdec.emit('state', {
firstName: store.state.firstName,
lastName: store.state.lastName,
fullName: fullName.state,
})
})
function DevtoolPanel() {
const [state, setState] = useState<EventMap['store-devtools:state']>(() => ({
firstName: store.state.firstName,
lastName: store.state.lastName,
fullName: fullName.state,
}))
useEffect(() => {
return sdec.on('state', (e) => setState(e.payload))
}, [])
return (
<div className="p-4 grid gap-4 grid-cols-[1fr_10fr]">
<div className="text-sm font-bold text-gray-500 whitespace-nowrap">
First Name
</div>
<div className="text-sm">{state?.firstName}</div>
<div className="text-sm font-bold text-gray-500 whitespace-nowrap">
Last Name
</div>
<div className="text-sm">{state?.lastName}</div>
<div className="text-sm font-bold text-gray-500 whitespace-nowrap">
Full Name
</div>
<div className="text-sm">{state?.fullName}</div>
</div>
)
}
export default {
name: 'TanStack Store',
render: <DevtoolPanel />,
}