create-better-t-stack 2.9.2 → 2.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/index.js +2 -2
  2. package/package.json +1 -1
  3. package/templates/api/trpc/web/react/base/src/utils/trpc.ts.hbs +2 -5
  4. package/templates/examples/todo/web/react/next/src/app/todos/page.tsx.hbs +91 -8
  5. package/templates/examples/todo/web/react/react-router/src/routes/todos.tsx.hbs +0 -1
  6. package/templates/frontend/native/nativewind/app/(drawer)/index.tsx.hbs +28 -20
  7. package/templates/frontend/native/nativewind/app/_layout.tsx.hbs +17 -0
  8. package/templates/frontend/native/unistyles/app/(drawer)/index.tsx.hbs +31 -15
  9. package/templates/frontend/native/unistyles/app/_layout.tsx.hbs +24 -0
  10. package/templates/frontend/nuxt/app/pages/{index.vue → index.vue.hbs} +6 -1
  11. package/templates/frontend/react/next/src/app/page.tsx.hbs +19 -15
  12. package/templates/frontend/react/next/src/components/providers.tsx.hbs +34 -33
  13. package/templates/frontend/react/react-router/src/root.tsx.hbs +60 -44
  14. package/templates/frontend/react/react-router/src/routes/_index.tsx.hbs +21 -17
  15. package/templates/frontend/react/tanstack-router/src/main.tsx.hbs +26 -29
  16. package/templates/frontend/react/tanstack-router/src/routes/__root.tsx.hbs +14 -44
  17. package/templates/frontend/react/tanstack-router/src/routes/index.tsx.hbs +17 -14
  18. package/templates/frontend/react/tanstack-start/src/router.tsx.hbs +18 -17
  19. package/templates/frontend/react/tanstack-start/src/routes/__root.tsx.hbs +12 -2
  20. package/templates/frontend/react/tanstack-start/src/routes/index.tsx.hbs +21 -20
  21. package/templates/frontend/solid/src/main.tsx.hbs +6 -0
  22. package/templates/frontend/solid/src/routes/__root.tsx.hbs +14 -1
  23. package/templates/frontend/solid/src/routes/index.tsx.hbs +8 -1
  24. package/templates/frontend/svelte/src/routes/+layout.svelte.hbs +16 -5
  25. package/templates/frontend/svelte/src/routes/+page.svelte.hbs +4 -14
  26. /package/templates/frontend/nuxt/app/layouts/{default.vue → default.vue.hbs} +0 -0
  27. /package/templates/frontend/nuxt/app/plugins/{vue-query.ts → vue-query.ts.hbs} +0 -0
@@ -2,14 +2,14 @@
2
2
  {{#if (eq backend "convex")}}
3
3
  import { useQuery } from "convex/react";
4
4
  import { api } from "@{{projectName}}/backend/convex/_generated/api.js";
5
- {{else}}
5
+ {{else if (or (eq api "orpc") (eq api "trpc"))}}
6
+ import { useQuery } from "@tanstack/react-query";
6
7
  {{#if (eq api "orpc")}}
7
8
  import { orpc } from "@/utils/orpc";
8
9
  {{/if}}
9
10
  {{#if (eq api "trpc")}}
10
11
  import { trpc } from "@/utils/trpc";
11
12
  {{/if}}
12
- import { useQuery } from "@tanstack/react-query";
13
13
  {{/if}}
14
14
 
15
15
  const TITLE_TEXT = `
@@ -43,8 +43,8 @@ export default function Home() {
43
43
  <div className="grid gap-6">
44
44
  <section className="rounded-lg border p-4">
45
45
  <h2 className="mb-2 font-medium">API Status</h2>
46
+ {{#if (eq backend "convex")}}
46
47
  <div className="flex items-center gap-2">
47
- {{#if (eq backend "convex")}}
48
48
  <div
49
49
  className={`h-2 w-2 rounded-full ${healthCheck === "OK" ? "bg-green-500" : healthCheck === undefined ? "bg-orange-400" : "bg-red-500"}`}
50
50
  />
@@ -55,19 +55,23 @@ export default function Home() {
55
55
  ? "Connected"
56
56
  : "Error"}
57
57
  </span>
58
- {{else}}
59
- <div
60
- className={`h-2 w-2 rounded-full ${healthCheck.data ? "bg-green-500" : "bg-red-500"}`}
61
- />
62
- <span className="text-sm text-muted-foreground">
63
- {healthCheck.isLoading
64
- ? "Checking..."
65
- : healthCheck.data
66
- ? "Connected"
67
- : "Disconnected"}
68
- </span>
69
- {{/if}}
70
58
  </div>
59
+ {{else}}
60
+ {{#unless (eq api "none")}}
61
+ <div className="flex items-center gap-2">
62
+ <div
63
+ className={`h-2 w-2 rounded-full ${healthCheck.data ? "bg-green-500" : "bg-red-500"}`}
64
+ />
65
+ <span className="text-sm text-muted-foreground">
66
+ {healthCheck.isLoading
67
+ ? "Checking..."
68
+ : healthCheck.data
69
+ ? "Connected"
70
+ : "Disconnected"}
71
+ </span>
72
+ </div>
73
+ {{/unless}}
74
+ {{/if}}
71
75
  </section>
72
76
  </div>
73
77
  </div>
@@ -1,49 +1,50 @@
1
1
  "use client"
2
2
  {{#if (eq backend "convex")}}
3
- import { ConvexProvider, ConvexReactClient } from "convex/react";
3
+ import { ConvexProvider, ConvexReactClient } from "convex/react";
4
4
  {{else}}
5
- import { QueryClientProvider } from "@tanstack/react-query";
6
- {{#if (eq api "orpc")}}
7
- import { orpc, ORPCContext, queryClient } from "@/utils/orpc";
8
- {{/if}}
9
- {{#if (eq api "trpc")}}
10
- import { queryClient } from "@/utils/trpc";
11
- {{/if}}
5
+ {{#unless (eq api "none")}}
6
+ import { QueryClientProvider } from "@tanstack/react-query";
7
+ {{#if (eq api "orpc")}}
8
+ import { orpc, ORPCContext, queryClient } from "@/utils/orpc";
9
+ {{/if}}
10
+ {{#if (eq api "trpc")}}
11
+ import { queryClient } from "@/utils/trpc";
12
+ {{/if}}
13
+ {{/unless}}
12
14
  {{/if}}
13
15
  import { ThemeProvider } from "./theme-provider";
14
16
  import { Toaster } from "./ui/sonner";
15
17
 
16
18
  {{#if (eq backend "convex")}}
17
- const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL!);
19
+ const convex = new ConvexReactClient(process.env.NEXT_PUBLIC_CONVEX_URL!);
18
20
  {{/if}}
19
21
 
20
- export default function Providers({
21
- children,
22
- }: {
23
- children: React.ReactNode
24
- }) {
25
- return (
26
- <ThemeProvider
27
- attribute="class"
28
- defaultTheme="system"
29
- enableSystem
30
- disableTransitionOnChange
31
- >
32
- {{#if (eq backend "convex")}}
33
- <ConvexProvider client={convex}>{children}</ConvexProvider>
34
- {{else}}
22
+ export default function Providers({ children, }: { children: React.ReactNode })
23
+ { return (
24
+ <ThemeProvider
25
+ attribute="class"
26
+ defaultTheme="system"
27
+ enableSystem
28
+ disableTransitionOnChange
29
+ >
30
+ {{#if (eq backend "convex")}}
31
+ <ConvexProvider client={convex}>{children}</ConvexProvider>
32
+ {{else}}
33
+ {{#unless (eq api "none")}}
35
34
  <QueryClientProvider client={queryClient}>
36
35
  {{#if (eq api "orpc")}}
37
- <ORPCContext.Provider value={orpc}>
38
- {children}
39
- </ORPCContext.Provider>
36
+ <ORPCContext.Provider value={orpc}>
37
+ {children}
38
+ </ORPCContext.Provider>
40
39
  {{/if}}
41
40
  {{#if (eq api "trpc")}}
42
- {children}
41
+ {children}
43
42
  {{/if}}
44
43
  </QueryClientProvider>
45
- {{/if}}
46
- <Toaster richColors />
47
- </ThemeProvider>
48
- )
49
- }
44
+ {{else}}
45
+ {children}
46
+ {{/unless}}
47
+ {{/if}}
48
+ <Toaster richColors />
49
+ </ThemeProvider>
50
+ ) }
@@ -13,20 +13,25 @@ import { ThemeProvider } from "./components/theme-provider";
13
13
  import { Toaster } from "./components/ui/sonner";
14
14
 
15
15
  {{#if (eq backend "convex")}}
16
- import { ConvexProvider, ConvexReactClient } from "convex/react";
16
+ import { ConvexProvider, ConvexReactClient } from "convex/react";
17
17
  {{else}}
18
- import { QueryClientProvider } from "@tanstack/react-query";
19
- import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
20
- {{#if (eq api "orpc")}}
21
- import { orpc, ORPCContext, queryClient } from "./utils/orpc";
22
- {{/if}}
23
- {{#if (eq api "trpc")}}
24
- import { queryClient } from "./utils/trpc";
25
- {{/if}}
18
+ {{#unless (eq api "none")}}
19
+ import { QueryClientProvider } from "@tanstack/react-query";
20
+ import { ReactQueryDevtools } from "@tanstack/react-query-devtools";
21
+ {{#if (eq api "orpc")}}
22
+ import { orpc, ORPCContext, queryClient } from "./utils/orpc";
23
+ {{/if}}
24
+ {{#if (eq api "trpc")}}
25
+ import { queryClient } from "./utils/trpc";
26
+ {{/if}}
27
+ {{/unless}}
26
28
  {{/if}}
27
29
 
28
30
  export const links: Route.LinksFunction = () => [
29
- { rel: "preconnect", href: "https://fonts.googleapis.com" },
31
+ {
32
+ rel: "preconnect",
33
+ href: "https://fonts.googleapis.com",
34
+ },
30
35
  {
31
36
  rel: "preconnect",
32
37
  href: "https://fonts.gstatic.com",
@@ -57,28 +62,12 @@ export function Layout({ children }: { children: React.ReactNode }) {
57
62
  }
58
63
 
59
64
  {{#if (eq backend "convex")}}
60
- export default function App() {
61
- const convex = new ConvexReactClient(
62
- import.meta.env.VITE_CONVEX_URL as string,
63
- );
64
-
65
- return (
66
- <ConvexProvider client={convex}>
67
- <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
68
- <div className="grid grid-rows-[auto_1fr] h-svh">
69
- <Header />
70
- <Outlet />
71
- </div>
72
- <Toaster richColors />
73
- </ThemeProvider>
74
- </ConvexProvider>
75
- );
76
- }
77
- {{else if (eq api "orpc")}}
78
- export default function App() {
79
- return (
80
- <QueryClientProvider client={queryClient}>
81
- <ORPCContext.Provider value={orpc}>
65
+ export default function App() {
66
+ const convex = new ConvexReactClient(
67
+ import.meta.env.VITE_CONVEX_URL as string,
68
+ );
69
+ return (
70
+ <ConvexProvider client={convex}>
82
71
  <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
83
72
  <div className="grid grid-rows-[auto_1fr] h-svh">
84
73
  <Header />
@@ -86,15 +75,44 @@ export default function App() {
86
75
  </div>
87
76
  <Toaster richColors />
88
77
  </ThemeProvider>
89
- </ORPCContext.Provider>
90
- <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
91
- </QueryClientProvider>
92
- );
93
- }
78
+ </ConvexProvider>
79
+ );
80
+ }
81
+ {{else if (eq api "orpc")}}
82
+ export default function App() {
83
+ return (
84
+ <QueryClientProvider client={queryClient}>
85
+ <ORPCContext.Provider value={orpc}>
86
+ <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
87
+ <div className="grid grid-rows-[auto_1fr] h-svh">
88
+ <Header />
89
+ <Outlet />
90
+ </div>
91
+ <Toaster richColors />
92
+ </ThemeProvider>
93
+ </ORPCContext.Provider>
94
+ <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
95
+ </QueryClientProvider>
96
+ );
97
+ }
94
98
  {{else if (eq api "trpc")}}
95
- export default function App() {
96
- return (
97
- <QueryClientProvider client={queryClient}>
99
+ export default function App() {
100
+ return (
101
+ <QueryClientProvider client={queryClient}>
102
+ <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
103
+ <div className="grid grid-rows-[auto_1fr] h-svh">
104
+ <Header />
105
+ <Outlet />
106
+ </div>
107
+ <Toaster richColors />
108
+ </ThemeProvider>
109
+ <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
110
+ </QueryClientProvider>
111
+ );
112
+ }
113
+ {{else}}
114
+ export default function App() {
115
+ return (
98
116
  <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
99
117
  <div className="grid grid-rows-[auto_1fr] h-svh">
100
118
  <Header />
@@ -102,10 +120,8 @@ export default function App() {
102
120
  </div>
103
121
  <Toaster richColors />
104
122
  </ThemeProvider>
105
- <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
106
- </QueryClientProvider>
107
- );
108
- }
123
+ );
124
+ }
109
125
  {{/if}}
110
126
 
111
127
  export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
@@ -2,14 +2,14 @@ import type { Route } from "./+types/_index";
2
2
  {{#if (eq backend "convex")}}
3
3
  import { useQuery } from "convex/react";
4
4
  import { api } from "@{{projectName}}/backend/convex/_generated/api.js";
5
- {{else}}
5
+ {{else if (or (eq api "orpc") (eq api "trpc"))}}
6
+ import { useQuery } from "@tanstack/react-query";
6
7
  {{#if (eq api "orpc")}}
7
8
  import { orpc } from "@/utils/orpc";
8
9
  {{/if}}
9
10
  {{#if (eq api "trpc")}}
10
11
  import { trpc } from "@/utils/trpc";
11
12
  {{/if}}
12
- import { useQuery } from "@tanstack/react-query";
13
13
  {{/if}}
14
14
 
15
15
  const TITLE_TEXT = `
@@ -47,8 +47,8 @@ export default function Home() {
47
47
  <div className="grid gap-6">
48
48
  <section className="rounded-lg border p-4">
49
49
  <h2 className="mb-2 font-medium">API Status</h2>
50
+ {{#if (eq backend "convex")}}
50
51
  <div className="flex items-center gap-2">
51
- {{#if (eq backend "convex")}}
52
52
  <div
53
53
  className={`h-2 w-2 rounded-full ${healthCheck === "OK" ? "bg-green-500" : healthCheck === undefined ? "bg-orange-400" : "bg-red-500"}`}
54
54
  />
@@ -59,21 +59,25 @@ export default function Home() {
59
59
  ? "Connected"
60
60
  : "Error"}
61
61
  </span>
62
- {{else}}
63
- <div
64
- className={`h-2 w-2 rounded-full ${
65
- healthCheck.data ? "bg-green-500" : "bg-red-500"
66
- }`}
67
- />
68
- <span className="text-sm text-muted-foreground">
69
- {healthCheck.isLoading
70
- ? "Checking..."
71
- : healthCheck.data
72
- ? "Connected"
73
- : "Disconnected"}
74
- </span>
75
- {{/if}}
76
62
  </div>
63
+ {{else}}
64
+ {{#unless (eq api "none")}}
65
+ <div className="flex items-center gap-2">
66
+ <div
67
+ className={`h-2 w-2 rounded-full ${
68
+ healthCheck.data ? "bg-green-500" : "bg-red-500"
69
+ }`}
70
+ />
71
+ <span className="text-sm text-muted-foreground">
72
+ {healthCheck.isLoading
73
+ ? "Checking..."
74
+ : healthCheck.data
75
+ ? "Connected"
76
+ : "Disconnected"}
77
+ </span>
78
+ </div>
79
+ {{/unless}}
80
+ {{/if}}
77
81
  </section>
78
82
  </div>
79
83
  </div>
@@ -2,57 +2,51 @@ import { RouterProvider, createRouter } from "@tanstack/react-router";
2
2
  import ReactDOM from "react-dom/client";
3
3
  import Loader from "./components/loader";
4
4
  import { routeTree } from "./routeTree.gen";
5
+
5
6
  {{#if (eq api "orpc")}}
6
- import { QueryClientProvider } from "@tanstack/react-query";
7
- import { orpc, queryClient } from "./utils/orpc";
7
+ import { QueryClientProvider } from "@tanstack/react-query";
8
+ import { orpc, queryClient } from "./utils/orpc";
8
9
  {{/if}}
9
10
  {{#if (eq api "trpc")}}
10
- import { QueryClientProvider } from "@tanstack/react-query";
11
- import { queryClient, trpc } from "./utils/trpc";
11
+ import { QueryClientProvider } from "@tanstack/react-query";
12
+ import { queryClient, trpc } from "./utils/trpc";
12
13
  {{/if}}
13
14
  {{#if (eq backend "convex")}}
14
- import { ConvexProvider, ConvexReactClient } from "convex/react";
15
-
16
- const convex = new ConvexReactClient(import.meta.env.VITE_CONVEX_URL as string);
15
+ import { ConvexProvider, ConvexReactClient } from "convex/react";
16
+ const convex = new ConvexReactClient(import.meta.env.VITE_CONVEX_URL as string);
17
17
  {{/if}}
18
18
 
19
- {{#if (eq api "orpc")}}
20
19
  const router = createRouter({
21
20
  routeTree,
22
21
  defaultPreload: "intent",
23
22
  defaultPendingComponent: () => <Loader />,
23
+ {{#if (eq api "orpc")}}
24
24
  context: { orpc, queryClient },
25
- Wrap: function WrapComponent({ children }) {
25
+ Wrap: function WrapComponent({ children }: { children: React.ReactNode }) {
26
26
  return (
27
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
27
+ <QueryClientProvider client={queryClient}>
28
+ {children}
29
+ </QueryClientProvider>
28
30
  );
29
31
  },
30
- });
31
- {{/if}}
32
- {{#if (eq api "trpc")}}
33
- const router = createRouter({
34
- routeTree,
35
- defaultPreload: "intent",
36
- defaultPendingComponent: () => <Loader />,
32
+ {{else if (eq api "trpc")}}
37
33
  context: { trpc, queryClient },
38
- Wrap: function WrapComponent({ children }) {
34
+ Wrap: function WrapComponent({ children }: { children: React.ReactNode }) {
39
35
  return (
40
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
36
+ <QueryClientProvider client={queryClient}>
37
+ {children}
38
+ </QueryClientProvider>
41
39
  );
42
40
  },
43
- });
44
- {{/if}}
45
- {{#if (eq backend "convex")}}
46
- const router = createRouter({
47
- routeTree,
48
- defaultPreload: "intent",
49
- defaultPendingComponent: () => <Loader />,
41
+ {{else if (eq backend "convex")}}
50
42
  context: {},
51
- Wrap: function WrapComponent({ children }) {
43
+ Wrap: function WrapComponent({ children }: { children: React.ReactNode }) {
52
44
  return <ConvexProvider client={convex}>{children}</ConvexProvider>;
53
45
  },
46
+ {{else}}
47
+ context: {},
48
+ {{/if}}
54
49
  });
55
- {{/if}}
56
50
 
57
51
  declare module "@tanstack/react-router" {
58
52
  interface Register {
@@ -61,7 +55,10 @@ declare module "@tanstack/react-router" {
61
55
  }
62
56
 
63
57
  const rootElement = document.getElementById("app");
64
- if (!rootElement) throw new Error("Root element not found");
58
+
59
+ if (!rootElement) {
60
+ throw new Error("Root element not found");
61
+ }
65
62
 
66
63
  if (!rootElement.innerHTML) {
67
64
  const root = ReactDOM.createRoot(rootElement);
@@ -31,14 +31,12 @@ export interface RouterAppContext {
31
31
  orpc: typeof orpc;
32
32
  queryClient: QueryClient;
33
33
  }
34
- {{/if}}
35
- {{#if (eq api "trpc")}}
34
+ {{else if (eq api "trpc")}}
36
35
  export interface RouterAppContext {
37
36
  trpc: typeof trpc;
38
37
  queryClient: QueryClient;
39
38
  }
40
- {{/if}}
41
- {{#if (eq backend "convex")}}
39
+ {{else}}
42
40
  export interface RouterAppContext {}
43
41
  {{/if}}
44
42
 
@@ -63,18 +61,21 @@ export const Route = createRootRouteWithContext<RouterAppContext>()({
63
61
  }),
64
62
  });
65
63
 
66
- {{#if (eq api "orpc")}}
67
64
  function RootComponent() {
68
- const [client] = useState<RouterClient<typeof appRouter>>(() => createORPCClient(link))
69
- const [orpc] = useState(() => createORPCReactQueryUtils(client))
70
-
71
65
  const isFetching = useRouterState({
72
66
  select: (s) => s.isLoading,
73
67
  });
68
+
69
+ {{#if (eq api "orpc")}}
70
+ const [client] = useState<RouterClient<typeof appRouter>>(() => createORPCClient(link));
71
+ const [orpcUtils] = useState(() => createORPCReactQueryUtils(client));
72
+ {{/if}}
73
+
74
74
  return (
75
75
  <>
76
76
  <HeadContent />
77
- <ORPCContext.Provider value={orpc}>
77
+ {{#if (eq api "orpc")}}
78
+ <ORPCContext.Provider value={orpcUtils}>
78
79
  <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
79
80
  <div className="grid grid-rows-[auto_1fr] h-svh">
80
81
  <Header />
@@ -83,20 +84,7 @@ function RootComponent() {
83
84
  <Toaster richColors />
84
85
  </ThemeProvider>
85
86
  </ORPCContext.Provider>
86
- <TanStackRouterDevtools position="bottom-left" />
87
- <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
88
- </>
89
- );
90
- }
91
- {{/if}}
92
- {{#if (eq api "trpc")}}
93
- function RootComponent() {
94
- const isFetching = useRouterState({
95
- select: (s) => s.isLoading,
96
- });
97
- return (
98
- <>
99
- <HeadContent />
87
+ {{else}}
100
88
  <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
101
89
  <div className="grid grid-rows-[auto_1fr] h-svh">
102
90
  <Header />
@@ -104,29 +92,11 @@ function RootComponent() {
104
92
  </div>
105
93
  <Toaster richColors />
106
94
  </ThemeProvider>
95
+ {{/if}}
107
96
  <TanStackRouterDevtools position="bottom-left" />
97
+ {{#if (or (eq api "orpc") (eq api "trpc"))}}
108
98
  <ReactQueryDevtools position="bottom" buttonPosition="bottom-right" />
99
+ {{/if}}
109
100
  </>
110
101
  );
111
102
  }
112
- {{/if}}
113
- {{#if (eq backend "convex")}}
114
- function RootComponent() {
115
- const isFetching = useRouterState({
116
- select: (s) => s.isLoading,
117
- });
118
- return (
119
- <>
120
- <HeadContent />
121
- <ThemeProvider defaultTheme="dark" storageKey="vite-ui-theme">
122
- <div className="grid grid-rows-[auto_1fr] h-svh">
123
- <Header />
124
- {isFetching ? <Loader /> : <Outlet />}
125
- </div>
126
- <Toaster richColors />
127
- </ThemeProvider>
128
- <TanStackRouterDevtools position="bottom-left" />
129
- </>
130
- );
131
- }
132
- {{/if}}
@@ -49,20 +49,8 @@ function HomeComponent() {
49
49
  <div className="grid gap-6">
50
50
  <section className="rounded-lg border p-4">
51
51
  <h2 className="mb-2 font-medium">API Status</h2>
52
+ {{#if (eq backend "convex")}}
52
53
  <div className="flex items-center gap-2">
53
- {{#if (or (eq api "orpc") (eq api "trpc"))}}
54
- <div
55
- className={`h-2 w-2 rounded-full ${healthCheck.data ? "bg-green-500" : "bg-red-500"}`}
56
- />
57
- <span className="text-sm text-muted-foreground">
58
- {healthCheck.isLoading
59
- ? "Checking..."
60
- : healthCheck.data
61
- ? "Connected"
62
- : "Disconnected"}
63
- </span>
64
- {{/if}}
65
- {{#if (eq backend "convex")}}
66
54
  <div
67
55
  className={`h-2 w-2 rounded-full ${healthCheck === "OK" ? "bg-green-500" : healthCheck === undefined ? "bg-orange-400" : "bg-red-500"}`}
68
56
  />
@@ -73,8 +61,23 @@ function HomeComponent() {
73
61
  ? "Connected"
74
62
  : "Error"}
75
63
  </span>
76
- {{/if}}
77
64
  </div>
65
+ {{else}}
66
+ {{#unless (eq api "none")}}
67
+ <div className="flex items-center gap-2">
68
+ <div
69
+ className={`h-2 w-2 rounded-full ${healthCheck.data ? "bg-green-500" : "bg-red-500"}`}
70
+ />
71
+ <span className="text-sm text-muted-foreground">
72
+ {healthCheck.isLoading
73
+ ? "Checking..."
74
+ : healthCheck.data
75
+ ? "Connected"
76
+ : "Disconnected"}
77
+ </span>
78
+ </div>
79
+ {{/unless}}
80
+ {{/if}}
78
81
  </section>
79
82
  </div>
80
83
  </div>
@@ -8,24 +8,20 @@ import { routeTree } from "./routeTree.gen";
8
8
  import Loader from "./components/loader";
9
9
  import "./index.css";
10
10
  {{else}}
11
- import {
12
- QueryCache,
13
- QueryClient,
14
- QueryClientProvider,
15
- } from "@tanstack/react-query";
16
11
  import { createRouter as createTanstackRouter } from "@tanstack/react-router";
17
12
  import Loader from "./components/loader";
18
13
  import "./index.css";
19
14
  import { routeTree } from "./routeTree.gen";
20
15
  {{#if (eq api "trpc")}}
16
+ import { QueryCache, QueryClient, QueryClientProvider } from "@tanstack/react-query";
21
17
  import { createTRPCClient, httpBatchLink } from "@trpc/client";
22
18
  import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query";
23
19
  import { toast } from "sonner";
24
20
  import type { AppRouter } from "../../server/src/routers";
25
21
  import { TRPCProvider } from "./utils/trpc";
26
- {{/if}}
27
- {{#if (eq api "orpc")}}
28
- import { orpc, ORPCContext, queryClient } from "./utils/orpc";
22
+ {{else if (eq api "orpc")}}
23
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
24
+ import { orpc, ORPCContext, queryClient as orpcQueryClient } from "./utils/orpc";
29
25
  {{/if}}
30
26
  {{/if}}
31
27
 
@@ -62,7 +58,6 @@ export function createRouter() {
62
58
  }),
63
59
  queryClient,
64
60
  );
65
-
66
61
  return router;
67
62
  }
68
63
  {{else}}
@@ -103,6 +98,8 @@ const trpc = createTRPCOptionsProxy({
103
98
  client: trpcClient,
104
99
  queryClient: queryClient,
105
100
  });
101
+ {{else if (eq api "orpc")}}
102
+ const queryClient = orpcQueryClient;
106
103
  {{/if}}
107
104
 
108
105
  export const createRouter = () => {
@@ -112,33 +109,37 @@ export const createRouter = () => {
112
109
  defaultPreloadStaleTime: 0,
113
110
  {{#if (eq api "trpc")}}
114
111
  context: { trpc, queryClient },
115
- {{/if}}
116
- {{#if (eq api "orpc")}}
112
+ {{else if (eq api "orpc")}}
117
113
  context: { orpc, queryClient },
114
+ {{else}}
115
+ context: { },
118
116
  {{/if}}
119
117
  defaultPendingComponent: () => <Loader />,
120
118
  defaultNotFoundComponent: () => <div>Not Found</div>,
119
+ {{#if (eq api "trpc")}}
121
120
  Wrap: ({ children }) => (
122
121
  <QueryClientProvider client={queryClient}>
123
- {{#if (eq api "trpc")}}
124
122
  <TRPCProvider trpcClient={trpcClient} queryClient={queryClient}>
125
123
  {children}
126
124
  </TRPCProvider>
127
- {{/if}}
128
- {{#if (eq api "orpc")}}
125
+ </QueryClientProvider>
126
+ ),
127
+ {{else if (eq api "orpc")}}
128
+ Wrap: ({ children }) => (
129
+ <QueryClientProvider client={queryClient}>
129
130
  <ORPCContext.Provider value={orpc}>
130
131
  {children}
131
132
  </ORPCContext.Provider>
132
- {{/if}}
133
133
  </QueryClientProvider>
134
134
  ),
135
+ {{else}}
136
+ Wrap: ({ children }) => <>{children}</>,
137
+ {{/if}}
135
138
  });
136
-
137
139
  return router;
138
140
  };
139
141
  {{/if}}
140
142
 
141
- // Register the router instance for type safety
142
143
  declare module "@tanstack/react-router" {
143
144
  interface Register {
144
145
  router: ReturnType<typeof createRouter>;