@tanstack/create 0.61.2 → 0.61.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.
- package/CHANGELOG.md +11 -0
- package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
- package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
- package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
- package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
- package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
- package/dist/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
- package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
- package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
- package/dist/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
- package/dist/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
- package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
- package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
- package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
- package/dist/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
- package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
- package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
- package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
- package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
- package/dist/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
- package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
- package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
- package/dist/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
- package/dist/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
- package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
- package/dist/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
- package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
- package/dist/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
- package/dist/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
- package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
- package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
- package/dist/frameworks/react/add-ons/t3env/README.md +1 -1
- package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
- package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
- package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
- package/dist/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
- package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
- package/dist/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
- package/dist/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
- package/dist/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
- package/dist/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
- package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
- package/dist/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
- package/dist/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
- package/dist/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
- package/dist/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
- package/dist/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
- package/dist/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
- package/dist/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
- package/dist/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
- package/dist/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
- package/dist/frameworks/react/project/base/package.json +5 -2
- package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +2 -2
- package/dist/frameworks/react/project/base/tsconfig.json.ejs +5 -5
- package/dist/frameworks/react/project/base/vite.config.ts.ejs +2 -11
- package/dist/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
- package/dist/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
- package/package.json +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
- package/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
- package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
- package/src/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
- package/src/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
- package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
- package/src/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
- package/src/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
- package/src/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
- package/src/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
- package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
- package/src/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
- package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
- package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
- package/src/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
- package/src/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
- package/src/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
- package/src/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
- package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
- package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
- package/src/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
- package/src/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
- package/src/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
- package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
- package/src/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
- package/src/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
- package/src/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
- package/src/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
- package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
- package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
- package/src/frameworks/react/add-ons/t3env/README.md +1 -1
- package/src/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
- package/src/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
- package/src/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
- package/src/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
- package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
- package/src/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
- package/src/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
- package/src/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
- package/src/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
- package/src/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
- package/src/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
- package/src/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
- package/src/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
- package/src/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
- package/src/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
- package/src/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
- package/src/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
- package/src/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
- package/src/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
- package/src/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
- package/src/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
- package/src/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
- package/src/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
- package/src/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
- package/src/frameworks/react/project/base/package.json +5 -2
- package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +2 -2
- package/src/frameworks/react/project/base/tsconfig.json.ejs +5 -5
- package/src/frameworks/react/project/base/vite.config.ts.ejs +2 -11
- package/src/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
- package/src/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
|
@@ -2,8 +2,8 @@ import { createFileRoute } from '@tanstack/react-router'
|
|
|
2
2
|
|
|
3
3
|
import { allTalks } from 'content-collections'
|
|
4
4
|
|
|
5
|
-
import TalkCard from '
|
|
6
|
-
import RemyAssistant from '
|
|
5
|
+
import TalkCard from '#/components/TalkCard'
|
|
6
|
+
import RemyAssistant from '#/components/RemyAssistant'
|
|
7
7
|
|
|
8
8
|
export const Route = createFileRoute('/talks/')({
|
|
9
9
|
component: TalksPage,
|
|
@@ -3,8 +3,8 @@ import { Send, X, Briefcase, UserCheck } from "lucide-react";
|
|
|
3
3
|
import { Streamdown } from "streamdown";
|
|
4
4
|
import { Store } from "@tanstack/store";
|
|
5
5
|
|
|
6
|
-
import { useResumeChat } from "
|
|
7
|
-
import type { ResumeChatMessages } from "
|
|
6
|
+
import { useResumeChat } from "#/lib/resume-ai-hook";
|
|
7
|
+
import type { ResumeChatMessages } from "#/lib/resume-ai-hook";
|
|
8
8
|
|
|
9
9
|
function Messages({ messages }: { messages: ResumeChatMessages }) {
|
|
10
10
|
const messagesContainerRef = useRef<HTMLDivElement>(null);
|
|
@@ -2,7 +2,7 @@ import * as React from "react"
|
|
|
2
2
|
import { Slot } from "@radix-ui/react-slot"
|
|
3
3
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
4
4
|
|
|
5
|
-
import { cn } from "
|
|
5
|
+
import { cn } from "#/lib/utils"
|
|
6
6
|
|
|
7
7
|
const badgeVariants = cva(
|
|
8
8
|
"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
|
|
@@ -3,17 +3,17 @@ import { marked } from 'marked'
|
|
|
3
3
|
|
|
4
4
|
import { createFileRoute } from '@tanstack/react-router'
|
|
5
5
|
import { allJobs, allEducations } from 'content-collections'
|
|
6
|
-
import { Card, CardContent, CardHeader, CardTitle } from '
|
|
7
|
-
import { Checkbox } from '
|
|
8
|
-
import { Badge } from '
|
|
9
|
-
import { Separator } from '
|
|
6
|
+
import { Card, CardContent, CardHeader, CardTitle } from '#/components/ui/card'
|
|
7
|
+
import { Checkbox } from '#/components/ui/checkbox'
|
|
8
|
+
import { Badge } from '#/components/ui/badge'
|
|
9
|
+
import { Separator } from '#/components/ui/separator'
|
|
10
10
|
import {
|
|
11
11
|
HoverCard,
|
|
12
12
|
HoverCardContent,
|
|
13
13
|
HoverCardTrigger,
|
|
14
|
-
} from '
|
|
14
|
+
} from '#/components/ui/hover-card'
|
|
15
15
|
|
|
16
|
-
import ResumeAssistant from '
|
|
16
|
+
import ResumeAssistant from '#/components/ResumeAssistant'
|
|
17
17
|
|
|
18
18
|
export const Route = createFileRoute('/')({
|
|
19
19
|
component: App,
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
"name": "",
|
|
3
3
|
"private": true,
|
|
4
4
|
"type": "module",
|
|
5
|
+
"imports": {
|
|
6
|
+
"#/*": "./src/*"
|
|
7
|
+
},
|
|
5
8
|
"scripts": {
|
|
6
9
|
"dev": "vite dev --port 3000",
|
|
7
10
|
"build": "vite build",
|
|
@@ -16,8 +19,7 @@
|
|
|
16
19
|
"@tanstack/react-start": "^1.132.0",
|
|
17
20
|
"lucide-react": "^0.561.0",
|
|
18
21
|
"react": "^19.2.0",
|
|
19
|
-
"react-dom": "^19.2.0"
|
|
20
|
-
"vite-tsconfig-paths": "^5.1.4"
|
|
22
|
+
"react-dom": "^19.2.0"
|
|
21
23
|
},
|
|
22
24
|
"devDependencies": {
|
|
23
25
|
"@tanstack/devtools-vite": "^0.3.11",
|
|
@@ -29,6 +31,7 @@
|
|
|
29
31
|
"jsdom": "^27.0.0",
|
|
30
32
|
"typescript": "^5.7.2",
|
|
31
33
|
"vite": "^7.1.7",
|
|
34
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
32
35
|
"vitest": "^3.0.5"
|
|
33
36
|
}
|
|
34
37
|
}
|
|
@@ -8,7 +8,7 @@ import Header from '../components/Header'
|
|
|
8
8
|
<% } %><% for(const integration of integrations.filter(i => i.type === 'layout' || i.type === 'provider' || i.type === 'devtools')) { %>
|
|
9
9
|
import <%= integration.jsName %> from '<%= relativePath(integration.path, true) %>'
|
|
10
10
|
<% } %><% if (addOnEnabled.paraglide) { %>
|
|
11
|
-
import { getLocale } from '
|
|
11
|
+
import { getLocale } from '#/paraglide/runtime'
|
|
12
12
|
<% } %>
|
|
13
13
|
import appCss from '../styles.css?url'
|
|
14
14
|
<% if (addOnEnabled["apollo-client"]) { %>
|
|
@@ -17,7 +17,7 @@ import type { ApolloClientIntegration } from "@apollo/client-integration-tanstac
|
|
|
17
17
|
<% if (addOnEnabled["tanstack-query"]) { %>
|
|
18
18
|
import type { QueryClient } from '@tanstack/react-query'
|
|
19
19
|
<% if (addOnEnabled.tRPC) { %>
|
|
20
|
-
import type { TRPCRouter } from '
|
|
20
|
+
import type { TRPCRouter } from '#/integrations/trpc/router'
|
|
21
21
|
import type { TRPCOptionsProxy } from '@trpc/tanstack-react-query'
|
|
22
22
|
<% } %>
|
|
23
23
|
<% } %>
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
"target": "ES2022",
|
|
6
6
|
"jsx": "react-jsx",
|
|
7
7
|
"module": "ESNext",
|
|
8
|
+
"baseUrl": ".",
|
|
9
|
+
"paths": {
|
|
10
|
+
"@/*": ["./src/*"]
|
|
11
|
+
},
|
|
8
12
|
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
9
13
|
"types": ["vite/client"],
|
|
10
14
|
|
|
@@ -21,10 +25,6 @@
|
|
|
21
25
|
"noUnusedLocals": true,
|
|
22
26
|
"noUnusedParameters": true,
|
|
23
27
|
"noFallthroughCasesInSwitch": true,
|
|
24
|
-
"noUncheckedSideEffectImports": true
|
|
25
|
-
"baseUrl": ".",
|
|
26
|
-
"paths": {
|
|
27
|
-
"@/*": ["./src/*"]
|
|
28
|
-
}
|
|
28
|
+
"noUncheckedSideEffectImports": true
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -1,31 +1,22 @@
|
|
|
1
1
|
import { defineConfig } from 'vite'
|
|
2
2
|
import { devtools } from '@tanstack/devtools-vite'
|
|
3
|
+
import tsconfigPaths from 'vite-tsconfig-paths'
|
|
3
4
|
<% if (addOnEnabled.paraglide) { -%>
|
|
4
5
|
import { paraglideVitePlugin } from "@inlang/paraglide-js"
|
|
5
6
|
<% } -%>
|
|
6
7
|
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
|
|
7
8
|
import viteReact from '@vitejs/plugin-react'
|
|
8
|
-
import viteTsConfigPaths from 'vite-tsconfig-paths'
|
|
9
|
-
import { fileURLToPath, URL } from 'node:url'
|
|
10
9
|
import tailwindcss from "@tailwindcss/vite"
|
|
11
10
|
<% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
|
|
12
11
|
<% } %>
|
|
13
12
|
|
|
14
13
|
const config = defineConfig({
|
|
15
|
-
resolve: {
|
|
16
|
-
alias: {
|
|
17
|
-
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
14
|
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
21
15
|
project: './project.inlang',
|
|
22
16
|
outdir: './src/paraglide',
|
|
23
17
|
strategy: ['url'],
|
|
24
18
|
}), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %>
|
|
25
|
-
|
|
26
|
-
viteTsConfigPaths({
|
|
27
|
-
projects: ['./tsconfig.json'],
|
|
28
|
-
}),
|
|
19
|
+
tsconfigPaths({ projects: ['./tsconfig.json'] }),
|
|
29
20
|
tailwindcss(),
|
|
30
21
|
tanstackStart(),
|
|
31
22
|
viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
@@ -2,4 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
import { tanstackConfig } from '@tanstack/eslint-config'
|
|
4
4
|
|
|
5
|
-
export default [
|
|
5
|
+
export default [
|
|
6
|
+
...tanstackConfig,
|
|
7
|
+
{
|
|
8
|
+
rules: {
|
|
9
|
+
'import/no-cycle': 'off',
|
|
10
|
+
'import/order': 'off',
|
|
11
|
+
'sort-imports': 'off',
|
|
12
|
+
'@typescript-eslint/array-type': 'off',
|
|
13
|
+
'@typescript-eslint/require-await': 'off',
|
|
14
|
+
'pnpm/json-enforce-catalog': 'off',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
ignores: ['eslint.config.js', 'prettier.config.js'],
|
|
19
|
+
},
|
|
20
|
+
]
|
|
@@ -2,4 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
import { tanstackConfig } from "@tanstack/eslint-config";
|
|
4
4
|
|
|
5
|
-
export default [
|
|
5
|
+
export default [
|
|
6
|
+
...tanstackConfig,
|
|
7
|
+
{
|
|
8
|
+
rules: {
|
|
9
|
+
"import/no-cycle": "off",
|
|
10
|
+
"import/order": "off",
|
|
11
|
+
"sort-imports": "off",
|
|
12
|
+
"@typescript-eslint/array-type": "off",
|
|
13
|
+
"@typescript-eslint/require-await": "off",
|
|
14
|
+
"pnpm/json-enforce-catalog": "off",
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
ignores: ["eslint.config.js", "prettier.config.js"],
|
|
19
|
+
},
|
|
20
|
+
];
|
package/package.json
CHANGED
|
@@ -5,8 +5,8 @@ import { Store } from '@tanstack/store'
|
|
|
5
5
|
import { Send, X, ChevronRight, BotIcon } from 'lucide-react'
|
|
6
6
|
import { Streamdown } from 'streamdown'
|
|
7
7
|
|
|
8
|
-
import { useGuitarRecommendationChat } from '
|
|
9
|
-
import type { ChatMessages } from '
|
|
8
|
+
import { useGuitarRecommendationChat } from '#/lib/demo-ai-hook'
|
|
9
|
+
import type { ChatMessages } from '#/lib/demo-ai-hook'
|
|
10
10
|
|
|
11
11
|
import GuitarRecommendation from './demo-GuitarRecommendation'
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ import { useNavigate } from '@tanstack/react-router'
|
|
|
2
2
|
|
|
3
3
|
import { showAIAssistant } from './demo-AIAssistant'
|
|
4
4
|
|
|
5
|
-
import guitars from '
|
|
5
|
+
import guitars from '#/data/demo-guitars'
|
|
6
6
|
|
|
7
7
|
export default function GuitarRecommendation({ id }: { id: string }) {
|
|
8
8
|
const navigate = useNavigate()
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import type { InferChatMessages } from '@tanstack/ai-react'
|
|
7
7
|
import { clientTools } from '@tanstack/ai-client'
|
|
8
8
|
|
|
9
|
-
import { recommendGuitarToolDef } from '
|
|
9
|
+
import { recommendGuitarToolDef } from '#/lib/demo-guitar-tools'
|
|
10
10
|
|
|
11
11
|
const recommendGuitarToolClient = recommendGuitarToolDef.client(({ id }) => ({
|
|
12
12
|
id: +id,
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
} from 'lucide-react'
|
|
12
12
|
import { Streamdown } from 'streamdown'
|
|
13
13
|
|
|
14
|
-
import { useGuitarRecommendationChat } from '
|
|
15
|
-
import type { ChatMessages } from '
|
|
16
|
-
import { useAudioRecorder } from '
|
|
17
|
-
import { useTTS } from '
|
|
14
|
+
import { useGuitarRecommendationChat } from '#/lib/demo-ai-hook'
|
|
15
|
+
import type { ChatMessages } from '#/lib/demo-ai-hook'
|
|
16
|
+
import { useAudioRecorder } from '#/hooks/demo-useAudioRecorder'
|
|
17
|
+
import { useTTS } from '#/hooks/demo-useTTS'
|
|
18
18
|
|
|
19
|
-
import GuitarRecommendation from '
|
|
19
|
+
import GuitarRecommendation from '#/components/demo-GuitarRecommendation'
|
|
20
20
|
|
|
21
21
|
import './ai-chat.css'
|
|
22
22
|
|
|
@@ -5,7 +5,7 @@ import { openaiText } from '@tanstack/ai-openai'
|
|
|
5
5
|
import { geminiText } from '@tanstack/ai-gemini'
|
|
6
6
|
import { ollamaText } from '@tanstack/ai-ollama'
|
|
7
7
|
|
|
8
|
-
import { getGuitars, recommendGuitarToolDef } from '
|
|
8
|
+
import { getGuitars, recommendGuitarToolDef } from '#/lib/demo-guitar-tools'
|
|
9
9
|
|
|
10
10
|
const SYSTEM_PROMPT = `You are a helpful assistant for a store that sells guitars.
|
|
11
11
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createFileRoute } from "@tanstack/react-router";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
-
import { authClient } from "
|
|
3
|
+
import { authClient } from "#/lib/auth-client";
|
|
4
4
|
|
|
5
5
|
export const Route = createFileRoute("/demo/better-auth")({
|
|
6
6
|
component: BetterAuthDemo,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef } from 'react'
|
|
2
2
|
import { useLiveQuery } from '@tanstack/react-db'
|
|
3
3
|
|
|
4
|
-
import { messagesCollection, type Message } from '
|
|
4
|
+
import { messagesCollection, type Message } from '#/db-collections'
|
|
5
5
|
|
|
6
6
|
import type { Collection } from '@tanstack/react-db'
|
|
7
7
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createFileRoute, useRouter } from '@tanstack/react-router'
|
|
2
2
|
import { createServerFn } from '@tanstack/react-start'
|
|
3
|
-
import { db } from '
|
|
3
|
+
import { db } from '#/db/index'
|
|
4
4
|
import { desc } from 'drizzle-orm'
|
|
5
|
-
import { todos } from '
|
|
5
|
+
import { todos } from '#/db/schema'
|
|
6
6
|
|
|
7
7
|
const getTodos = createServerFn({
|
|
8
8
|
method: 'GET',
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useStore } from '@tanstack/react-form'
|
|
2
2
|
|
|
3
|
-
import { useFieldContext, useFormContext } from '
|
|
3
|
+
import { useFieldContext, useFormContext } from '#/hooks/demo.form-context'
|
|
4
4
|
<% if (addOnEnabled.shadcn) { %>
|
|
5
|
-
import { Button } from '
|
|
6
|
-
import { Input } from '
|
|
7
|
-
import { Textarea as ShadcnTextarea } from '
|
|
8
|
-
import * as ShadcnSelect from '
|
|
9
|
-
import { Slider as ShadcnSlider } from '
|
|
10
|
-
import { Switch as ShadcnSwitch } from '
|
|
11
|
-
import { Label } from '
|
|
5
|
+
import { Button } from '#/components/ui/button'
|
|
6
|
+
import { Input } from '#/components/ui/input'
|
|
7
|
+
import { Textarea as ShadcnTextarea } from '#/components/ui/textarea'
|
|
8
|
+
import * as ShadcnSelect from '#/components/ui/select'
|
|
9
|
+
import { Slider as ShadcnSlider } from '#/components/ui/slider'
|
|
10
|
+
import { Switch as ShadcnSwitch } from '#/components/ui/switch'
|
|
11
|
+
import { Label } from '#/components/ui/label'
|
|
12
12
|
|
|
13
13
|
export function SubscribeButton({ label }: { label: string }) {
|
|
14
14
|
const form = useFormContext()
|
|
@@ -117,11 +117,15 @@ export function Select({
|
|
|
117
117
|
<ShadcnSelect.SelectTrigger className="w-full">
|
|
118
118
|
<ShadcnSelect.SelectValue placeholder={placeholder} />
|
|
119
119
|
</ShadcnSelect.SelectTrigger>
|
|
120
|
-
<ShadcnSelect.SelectContent>
|
|
120
|
+
<ShadcnSelect.SelectContent className="bg-background text-foreground">
|
|
121
121
|
<ShadcnSelect.SelectGroup>
|
|
122
122
|
<ShadcnSelect.SelectLabel>{label}</ShadcnSelect.SelectLabel>
|
|
123
123
|
{values.map((value) => (
|
|
124
|
-
<ShadcnSelect.SelectItem
|
|
124
|
+
<ShadcnSelect.SelectItem
|
|
125
|
+
key={value.value}
|
|
126
|
+
value={value.value}
|
|
127
|
+
className="text-foreground"
|
|
128
|
+
>
|
|
125
129
|
{value.label}
|
|
126
130
|
</ShadcnSelect.SelectItem>
|
|
127
131
|
))}
|
|
@@ -297,4 +301,4 @@ export function Select({
|
|
|
297
301
|
</div>
|
|
298
302
|
)
|
|
299
303
|
}
|
|
300
|
-
<% } %>
|
|
304
|
+
<% } %>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { <% if (fileRouter) { %>createFileRoute<% } else { %>createRoute<% } %> } from '@tanstack/react-router'
|
|
2
2
|
|
|
3
|
-
import { useAppForm } from '
|
|
3
|
+
import { useAppForm } from '#/hooks/demo.form'
|
|
4
4
|
|
|
5
5
|
<% if (codeRouter) { %>
|
|
6
6
|
import type { RootRoute } from '@tanstack/react-router'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { <% if (fileRouter) { %>createFileRoute<% } else { %>createRoute<% } %> } from '@tanstack/react-router'
|
|
2
2
|
import { z } from 'zod'
|
|
3
3
|
|
|
4
|
-
import { useAppForm } from '
|
|
4
|
+
import { useAppForm } from '#/hooks/demo.form'
|
|
5
5
|
|
|
6
6
|
<% if (codeRouter) { %>
|
|
7
7
|
import type { RootRoute } from '@tanstack/react-router'
|
|
@@ -2,9 +2,9 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
|
2
2
|
import { createFileRoute } from '@tanstack/react-router'
|
|
3
3
|
import z from 'zod'
|
|
4
4
|
|
|
5
|
-
import { handleMcpRequest } from '
|
|
5
|
+
import { handleMcpRequest } from '#/utils/mcp-handler'
|
|
6
6
|
|
|
7
|
-
import { addTodo } from '
|
|
7
|
+
import { addTodo } from '#/mcp-todos'
|
|
8
8
|
|
|
9
9
|
const server = new McpServer({
|
|
10
10
|
name: 'start-server',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '
|
|
1
|
+
import '#/polyfill'
|
|
2
2
|
|
|
3
3
|
import { OpenAPIHandler } from '@orpc/openapi/fetch'
|
|
4
4
|
import { ZodToJsonSchemaConverter } from '@orpc/zod/zod4'
|
|
@@ -7,8 +7,8 @@ import { createFileRoute } from '@tanstack/react-router'
|
|
|
7
7
|
import { onError } from '@orpc/server'
|
|
8
8
|
import { OpenAPIReferencePlugin } from '@orpc/openapi/plugins'
|
|
9
9
|
|
|
10
|
-
import { TodoSchema } from '
|
|
11
|
-
import router from '
|
|
10
|
+
import { TodoSchema } from '#/orpc/schema'
|
|
11
|
+
import router from '#/orpc/router'
|
|
12
12
|
|
|
13
13
|
const handler = new OpenAPIHandler(router, {
|
|
14
14
|
interceptors: [
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import '
|
|
1
|
+
import '#/polyfill'
|
|
2
2
|
|
|
3
3
|
import { RPCHandler } from '@orpc/server/fetch'
|
|
4
4
|
import { createFileRoute } from '@tanstack/react-router'
|
|
5
|
-
import router from '
|
|
5
|
+
import router from '#/orpc/router'
|
|
6
6
|
|
|
7
7
|
const handler = new RPCHandler(router)
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@ import { useCallback, useState } from 'react'
|
|
|
2
2
|
import { createFileRoute } from '@tanstack/react-router'
|
|
3
3
|
import { useMutation, useQuery } from '@tanstack/react-query'
|
|
4
4
|
|
|
5
|
-
import { orpc } from '
|
|
5
|
+
import { orpc } from '#/orpc/client'
|
|
6
6
|
|
|
7
7
|
export const Route = createFileRoute('/demo/orpc-todo')({
|
|
8
8
|
component: ORPCTodos,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Locale switcher refs:
|
|
2
2
|
// - Paraglide docs: https://inlang.com/m/gerre34r/library-inlang-paraglideJs
|
|
3
3
|
// - Router example: https://github.com/TanStack/router/tree/main/examples/react/i18n-paraglide#switching-locale
|
|
4
|
-
import { getLocale, locales, setLocale } from '
|
|
5
|
-
import { m } from '
|
|
4
|
+
import { getLocale, locales, setLocale } from '#/paraglide/runtime'
|
|
5
|
+
import { m } from '#/paraglide/messages'
|
|
6
6
|
|
|
7
7
|
export default function ParaglideLocaleSwitcher() {
|
|
8
8
|
const currentLocale = getLocale()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createFileRoute } from "@tanstack/react-router";
|
|
2
2
|
import logo from "../logo.svg";
|
|
3
|
-
import { m } from "
|
|
3
|
+
import { m } from "#/paraglide/messages";
|
|
4
4
|
import LocaleSwitcher from "../components/LocaleSwitcher";
|
|
5
5
|
|
|
6
6
|
export const Route = createFileRoute("/demo/i18n")({
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
"prefix": ""
|
|
12
12
|
},
|
|
13
13
|
"aliases": {
|
|
14
|
-
"components": "
|
|
15
|
-
"utils": "
|
|
16
|
-
"ui": "
|
|
17
|
-
"lib": "
|
|
18
|
-
"hooks": "
|
|
14
|
+
"components": "#/components",
|
|
15
|
+
"utils": "#/lib/utils",
|
|
16
|
+
"ui": "#/components/ui",
|
|
17
|
+
"lib": "#/lib",
|
|
18
|
+
"hooks": "#/hooks"
|
|
19
19
|
},
|
|
20
20
|
"iconLibrary": "lucide"
|
|
21
21
|
}
|