diff --git a/examples/tuono/src/routes/__root.tsx b/examples/tuono/src/routes/__root.tsx
index 6ce55ca9..60bbbbba 100644
--- a/examples/tuono/src/routes/__root.tsx
+++ b/examples/tuono/src/routes/__root.tsx
@@ -8,7 +8,7 @@ export default function RootRoute({ children }: RootRouteProps): JSX.Element {
return (
<>
{children}
>
diff --git a/examples/tuono/src/routes/index.rs b/examples/tuono/src/routes/index.rs
index 393c37e9..fb2a041a 100644
--- a/examples/tuono/src/routes/index.rs
+++ b/examples/tuono/src/routes/index.rs
@@ -3,14 +3,12 @@ use tuono_lib::{Request, Response};
#[derive(Serialize)]
struct MyResponse<'a> {
- title: &'a str,
- subtitle: &'a str,
+ description: &'a str,
}
#[tuono_lib::handler]
fn get_server_side_props(req: &Request) -> Response {
Response::Props(Box::new(MyResponse {
- title: "title",
- subtitle: "subtitle",
+ description: "This descriptions comes from the rust server",
}))
}
diff --git a/examples/tuono/src/routes/index.tsx b/examples/tuono/src/routes/index.tsx
index a971e75e..0fe72eb2 100644
--- a/examples/tuono/src/routes/index.tsx
+++ b/examples/tuono/src/routes/index.tsx
@@ -1,3 +1,20 @@
-export default function IndexPage(): JSX.Element {
- return
Index Page
+import type { TuonoProps } from 'tuono'
+
+type IndexProps = {
+ description: string
+}
+export default function IndexPage({
+ data,
+ isLoading,
+}: TuonoProps): JSX.Element {
+ if (isLoading) {
+ return Loading...
+ }
+
+ return (
+ <>
+ Index Page
+ {data?.description}
+ >
+ )
}
diff --git a/packages/tuono/src/index.ts b/packages/tuono/src/index.ts
index ce54666d..842eddcc 100644
--- a/packages/tuono/src/index.ts
+++ b/packages/tuono/src/index.ts
@@ -6,4 +6,6 @@ import {
RouterProvider,
} from './router'
+export type { TuonoProps } from './types'
+
export { createRoute, createRootRoute, createRouter, Link, RouterProvider }
diff --git a/packages/tuono/src/router/hooks/useServerSideProps.tsx b/packages/tuono/src/router/hooks/useServerSideProps.tsx
index 486c1289..b221253d 100644
--- a/packages/tuono/src/router/hooks/useServerSideProps.tsx
+++ b/packages/tuono/src/router/hooks/useServerSideProps.tsx
@@ -45,7 +45,8 @@ export function useServerSideProps(
;(async (): Promise => {
setIsLoading(true)
try {
- const res = await fetch(`/__tuono/data/${route.path}`)
+ const path = route.path === '/' ? '' : route.path
+ const res = await fetch(`/__tuono/data/${path}`)
setData(await res.json())
} catch (error) {
// Handle here error
diff --git a/packages/tuono/src/types.ts b/packages/tuono/src/types.ts
new file mode 100644
index 00000000..2d2b5b83
--- /dev/null
+++ b/packages/tuono/src/types.ts
@@ -0,0 +1,4 @@
+export interface TuonoProps {
+ data?: T
+ isLoading: boolean
+}