Skip to content

Commit 9d23b61

Browse files
committed
fix(app): vendor TanStack demo sources
1 parent 26f8958 commit 9d23b61

41 files changed

Lines changed: 2636 additions & 1 deletion

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/tanstack-chat-demo

Lines changed: 0 additions & 1 deletion
This file was deleted.

apps/tanstack-chat-demo/.cta.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"projectName": "tanstack-chat-demo",
3+
"mode": "file-router",
4+
"typescript": true,
5+
"tailwind": true,
6+
"packageManager": "pnpm",
7+
"git": false,
8+
"install": false,
9+
"addOnOptions": {},
10+
"includeExamples": false,
11+
"envVarValues": {},
12+
"routerOnly": false,
13+
"version": 1,
14+
"framework": "react",
15+
"chosenAddOns": []
16+
}

apps/tanstack-chat-demo/.gitignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
node_modules
2+
.DS_Store
3+
dist
4+
dist-ssr
5+
*.local
6+
.env
7+
.nitro
8+
.tanstack
9+
.wrangler
10+
.output
11+
.vinxi
12+
__unconfig*
13+
todos.json
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"files.watcherExclude": {
3+
"**/routeTree.gen.ts": true
4+
},
5+
"search.exclude": {
6+
"**/routeTree.gen.ts": true
7+
},
8+
"files.readonlyInclude": {
9+
"**/routeTree.gen.ts": true
10+
}
11+
}

apps/tanstack-chat-demo/README.md

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
Welcome to your new TanStack Start app!
2+
3+
# Getting Started
4+
5+
To run this application:
6+
7+
```bash
8+
pnpm install
9+
pnpm dev
10+
```
11+
12+
# Building For Production
13+
14+
To build this application for production:
15+
16+
```bash
17+
pnpm build
18+
```
19+
20+
## Testing
21+
22+
This project uses [Vitest](https://vitest.dev/) for testing. You can run the tests with:
23+
24+
```bash
25+
pnpm test
26+
```
27+
28+
## Styling
29+
30+
This project uses [Tailwind CSS](https://tailwindcss.com/) for styling.
31+
32+
### Removing Tailwind CSS
33+
34+
If you prefer not to use Tailwind CSS:
35+
36+
1. Remove the demo pages in `src/routes/demo/`
37+
2. Replace the Tailwind import in `src/styles.css` with your own styles
38+
3. Remove `tailwindcss()` from the plugins array in `vite.config.ts`
39+
4. Uninstall the packages: `pnpm add @tailwindcss/vite tailwindcss --dev`
40+
41+
42+
43+
## Routing
44+
45+
This project uses [TanStack Router](https://tanstack.com/router) with file-based routing. Routes are managed as files in `src/routes`.
46+
47+
### Adding A Route
48+
49+
To add a new route to your application just add a new file in the `./src/routes` directory.
50+
51+
TanStack will automatically generate the content of the route file for you.
52+
53+
Now that you have two routes you can use a `Link` component to navigate between them.
54+
55+
### Adding Links
56+
57+
To use SPA (Single Page Application) navigation you will need to import the `Link` component from `@tanstack/react-router`.
58+
59+
```tsx
60+
import { Link } from "@tanstack/react-router";
61+
```
62+
63+
Then anywhere in your JSX you can use it like so:
64+
65+
```tsx
66+
<Link to="/about">About</Link>
67+
```
68+
69+
This will create a link that will navigate to the `/about` route.
70+
71+
More information on the `Link` component can be found in the [Link documentation](https://tanstack.com/router/v1/docs/framework/react/api/router/linkComponent).
72+
73+
### Using A Layout
74+
75+
In the File Based Routing setup the layout is located in `src/routes/__root.tsx`. Anything you add to the root route will appear in all the routes. The route content will appear in the JSX where you render `{children}` in the `shellComponent`.
76+
77+
Here is an example layout that includes a header:
78+
79+
```tsx
80+
import { HeadContent, Scripts, createRootRoute } from '@tanstack/react-router'
81+
82+
export const Route = createRootRoute({
83+
head: () => ({
84+
meta: [
85+
{ charSet: 'utf-8' },
86+
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
87+
{ title: 'My App' },
88+
],
89+
}),
90+
shellComponent: ({ children }) => (
91+
<html lang="en">
92+
<head>
93+
<HeadContent />
94+
</head>
95+
<body>
96+
<header>
97+
<nav>
98+
<Link to="/">Home</Link>
99+
<Link to="/about">About</Link>
100+
</nav>
101+
</header>
102+
{children}
103+
<Scripts />
104+
</body>
105+
</html>
106+
),
107+
})
108+
```
109+
110+
More information on layouts can be found in the [Layouts documentation](https://tanstack.com/router/latest/docs/framework/react/guide/routing-concepts#layouts).
111+
112+
## Server Functions
113+
114+
TanStack Start provides server functions that allow you to write server-side code that seamlessly integrates with your client components.
115+
116+
```tsx
117+
import { createServerFn } from '@tanstack/react-start'
118+
119+
const getServerTime = createServerFn({
120+
method: 'GET',
121+
}).handler(async () => {
122+
return new Date().toISOString()
123+
})
124+
125+
// Use in a component
126+
function MyComponent() {
127+
const [time, setTime] = useState('')
128+
129+
useEffect(() => {
130+
getServerTime().then(setTime)
131+
}, [])
132+
133+
return <div>Server time: {time}</div>
134+
}
135+
```
136+
137+
## API Routes
138+
139+
You can create API routes by using the `server` property in your route definitions:
140+
141+
```tsx
142+
import { createFileRoute } from '@tanstack/react-router'
143+
import { json } from '@tanstack/react-start'
144+
145+
export const Route = createFileRoute('/api/hello')({
146+
server: {
147+
handlers: {
148+
GET: () => json({ message: 'Hello, World!' }),
149+
},
150+
},
151+
})
152+
```
153+
154+
## Data Fetching
155+
156+
There are multiple ways to fetch data in your application. You can use TanStack Query to fetch data from a server. But you can also use the `loader` functionality built into TanStack Router to load the data for a route before it's rendered.
157+
158+
For example:
159+
160+
```tsx
161+
import { createFileRoute } from '@tanstack/react-router'
162+
163+
export const Route = createFileRoute('/people')({
164+
loader: async () => {
165+
const response = await fetch('https://swapi.dev/api/people')
166+
return response.json()
167+
},
168+
component: PeopleComponent,
169+
})
170+
171+
function PeopleComponent() {
172+
const data = Route.useLoaderData()
173+
return (
174+
<ul>
175+
{data.results.map((person) => (
176+
<li key={person.name}>{person.name}</li>
177+
))}
178+
</ul>
179+
)
180+
}
181+
```
182+
183+
Loaders simplify your data fetching logic dramatically. Check out more information in the [Loader documentation](https://tanstack.com/router/latest/docs/framework/react/guide/data-loading#loader-parameters).
184+
185+
# Demo files
186+
187+
Files prefixed with `demo` can be safely deleted. They are there to provide a starting point for you to play around with the features you've installed.
188+
189+
# Learn More
190+
191+
You can learn more about all of the offerings from TanStack in the [TanStack documentation](https://tanstack.com).
192+
193+
For TanStack Start specific documentation, visit [TanStack Start](https://tanstack.com/start).
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "radix-nova",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "",
8+
"css": "src/styles.css",
9+
"baseColor": "neutral",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"iconLibrary": "lucide",
14+
"rtl": false,
15+
"aliases": {
16+
"components": "#/components",
17+
"utils": "#/lib/utils",
18+
"ui": "#/components/ui",
19+
"lib": "#/lib",
20+
"hooks": "#/hooks"
21+
},
22+
"menuColor": "default",
23+
"menuAccent": "subtle",
24+
"registries": {}
25+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"name": "tanstack-chat-demo",
3+
"private": true,
4+
"type": "module",
5+
"imports": {
6+
"#/*": "./src/*"
7+
},
8+
"scripts": {
9+
"dev": "vite dev --port 3000",
10+
"build": "vite build",
11+
"preview": "vite preview",
12+
"lint": "eslint . --fix",
13+
"test": "vitest run --passWithNoTests"
14+
},
15+
"dependencies": {
16+
"@agentic-kit/ollama": "workspace:*",
17+
"@agentic-kit/openai": "workspace:*",
18+
"@fontsource-variable/geist": "^5.2.8",
19+
"@tailwindcss/vite": "^4.1.18",
20+
"@tanstack/react-devtools": "latest",
21+
"@tanstack/react-router": "latest",
22+
"@tanstack/react-router-devtools": "latest",
23+
"@tanstack/react-router-ssr-query": "latest",
24+
"@tanstack/react-start": "latest",
25+
"@tanstack/router-plugin": "^1.132.0",
26+
"agentic-kit": "workspace:*",
27+
"class-variance-authority": "^0.7.1",
28+
"clsx": "^2.1.1",
29+
"lucide-react": "^0.545.0",
30+
"radix-ui": "^1.4.3",
31+
"react": "^19.2.0",
32+
"react-dom": "^19.2.0",
33+
"shadcn": "^4.3.0",
34+
"tailwind-merge": "^3.5.0",
35+
"tailwindcss": "^4.1.18",
36+
"tw-animate-css": "^1.4.0"
37+
},
38+
"devDependencies": {
39+
"@tailwindcss/typography": "^0.5.16",
40+
"@tanstack/devtools-vite": "latest",
41+
"@testing-library/dom": "^10.4.1",
42+
"@testing-library/react": "^16.3.0",
43+
"@types/node": "^22.10.2",
44+
"@types/react": "^19.2.0",
45+
"@types/react-dom": "^19.2.0",
46+
"@vitejs/plugin-react": "^6.0.1",
47+
"jsdom": "^28.1.0",
48+
"typescript": "^5.7.2",
49+
"vite": "^8.0.0",
50+
"vitest": "^3.0.5"
51+
},
52+
"pnpm": {
53+
"onlyBuiltDependencies": [
54+
"esbuild",
55+
"lightningcss"
56+
]
57+
}
58+
}
3.78 KB
Binary file not shown.
5.22 KB
Loading
9.44 KB
Loading

0 commit comments

Comments
 (0)