diff --git a/frameworks/react-cra/add-ons/store/assets/src/routes/demo.store.tsx.ejs b/frameworks/react-cra/add-ons/store/assets/src/routes/demo.store.tsx.ejs new file mode 100644 index 00000000..f97fd968 --- /dev/null +++ b/frameworks/react-cra/add-ons/store/assets/src/routes/demo.store.tsx.ejs @@ -0,0 +1,75 @@ +import { <% if (fileRouter) { %>createFileRoute<% } else { %>createRoute<% } %> } from '@tanstack/react-router' +import { useStore } from '@tanstack/react-store' + +import { fullName, store } from '@/lib/demo-store' +<% if (codeRouter) { %> +import type { RootRoute } from '@tanstack/react-router' +<% } else { %> +export const Route = createFileRoute('/demo/store')({ + component: DemoStore, +}) +<% } %> + +function FirstName() { + const firstName = useStore(store, (state) => state.firstName) + return ( + + store.setState((state) => ({ ...state, firstName: e.target.value })) + } + className="bg-white/10 rounded-lg px-4 py-2 outline-none border border-white/20 hover:border-white/40 focus:border-white/60 transition-colors duration-200 placeholder-white/40" + /> + ) +} + +function LastName() { + const lastName = useStore(store, (state) => state.lastName) + return ( + + store.setState((state) => ({ ...state, lastName: e.target.value })) + } + className="bg-white/10 rounded-lg px-4 py-2 outline-none border border-white/20 hover:border-white/40 focus:border-white/60 transition-colors duration-200 placeholder-white/40" + /> + ) +} + +function FullName() { + const fName = useStore(fullName) + return ( +
+ {fName} +
+ ) +} + +function DemoStore() { + return ( +
+
+

Store Example

+ + + +
+
+ ) +} + +<% if (codeRouter) { %> +export default (parentRoute: RootRoute) => createRoute({ + path: '/demo/store', + component: DemoStore, + getParentRoute: () => parentRoute, +}) +<% } %>