@tanstack/create 0.61.2 → 0.61.4
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 +27 -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/_dot_gitignore +0 -1
- package/dist/frameworks/react/project/base/index.html.ejs +13 -0
- package/dist/frameworks/react/project/base/package.json +5 -2
- package/dist/frameworks/react/project/base/src/main.tsx.ejs +24 -0
- package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
- package/dist/frameworks/react/project/base/tsconfig.json.ejs +5 -5
- package/dist/frameworks/react/project/base/vite.config.ts.ejs +8 -13
- package/dist/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
- package/dist/frameworks/solid/project/base/_dot_gitignore +0 -1
- package/dist/frameworks/solid/project/base/index.html.ejs +13 -0
- package/dist/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
- package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
- package/dist/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
- package/dist/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
- package/dist/package-json.js +20 -0
- package/dist/template-file.js +1 -0
- package/dist/types/types.d.ts +1 -0
- 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/_dot_gitignore +0 -1
- package/src/frameworks/react/project/base/index.html.ejs +13 -0
- package/src/frameworks/react/project/base/package.json +5 -2
- package/src/frameworks/react/project/base/src/main.tsx.ejs +24 -0
- package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
- package/src/frameworks/react/project/base/tsconfig.json.ejs +5 -5
- package/src/frameworks/react/project/base/vite.config.ts.ejs +8 -13
- package/src/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
- package/src/frameworks/solid/project/base/_dot_gitignore +0 -1
- package/src/frameworks/solid/project/base/index.html.ejs +13 -0
- package/src/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
- package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
- package/src/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
- package/src/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
- package/src/package-json.ts +24 -0
- package/src/template-file.ts +1 -0
- package/src/types.ts +1 -0
|
@@ -4,7 +4,7 @@ import { Clock, User, ArrowLeft, Tag } from 'lucide-react'
|
|
|
4
4
|
|
|
5
5
|
import { allTalks, allSpeakers } from 'content-collections'
|
|
6
6
|
|
|
7
|
-
import RemyAssistant from '
|
|
7
|
+
import RemyAssistant from '#/components/RemyAssistant'
|
|
8
8
|
|
|
9
9
|
export const Route = createFileRoute('/talks/$slug')({
|
|
10
10
|
loader: async ({ params }) => {
|
|
@@ -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,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% if (!routerOnly) { ignoreFile() } %>
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title><%= projectName %></title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="app"></div>
|
|
11
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -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
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<% if (!routerOnly) { ignoreFile() } %>
|
|
2
|
+
import React from 'react'
|
|
3
|
+
import ReactDOM from 'react-dom/client'
|
|
4
|
+
import { RouterProvider, createRouter } from '@tanstack/react-router'
|
|
5
|
+
import { routeTree } from './routeTree.gen'
|
|
6
|
+
|
|
7
|
+
const router = createRouter({
|
|
8
|
+
routeTree,
|
|
9
|
+
defaultPreload: 'intent',
|
|
10
|
+
scrollRestoration: true,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
declare module '@tanstack/react-router' {
|
|
14
|
+
interface Register {
|
|
15
|
+
router: typeof router
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const rootElement = document.getElementById('app')!
|
|
20
|
+
|
|
21
|
+
if (!rootElement.innerHTML) {
|
|
22
|
+
const root = ReactDOM.createRoot(rootElement)
|
|
23
|
+
root.render(<RouterProvider router={router} />)
|
|
24
|
+
}
|
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
<% if (routerOnly) { %>
|
|
2
|
+
import { Outlet, createRootRoute } from '@tanstack/react-router'
|
|
3
|
+
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'
|
|
4
|
+
import { TanStackDevtools } from '@tanstack/react-devtools'
|
|
5
|
+
|
|
6
|
+
import '../styles.css'
|
|
7
|
+
|
|
8
|
+
export const Route = createRootRoute({
|
|
9
|
+
component: RootComponent,
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
function RootComponent() {
|
|
13
|
+
return (
|
|
14
|
+
<>
|
|
15
|
+
<Outlet />
|
|
16
|
+
<TanStackDevtools
|
|
17
|
+
config={{
|
|
18
|
+
position: 'bottom-right',
|
|
19
|
+
}}
|
|
20
|
+
plugins={[
|
|
21
|
+
{
|
|
22
|
+
name: 'TanStack Router',
|
|
23
|
+
render: <TanStackRouterDevtoolsPanel />,
|
|
24
|
+
},
|
|
25
|
+
]}
|
|
26
|
+
/>
|
|
27
|
+
</>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
<% } else { %>
|
|
1
31
|
<% let hasContext = addOnEnabled["apollo-client"] || addOnEnabled["tanstack-query"]; %>
|
|
2
32
|
import {
|
|
3
33
|
HeadContent, Scripts, <% if (hasContext) { %>createRootRouteWithContext<% } else { %>createRootRoute<% } %> } from '@tanstack/react-router'
|
|
@@ -8,7 +38,7 @@ import Header from '../components/Header'
|
|
|
8
38
|
<% } %><% for(const integration of integrations.filter(i => i.type === 'layout' || i.type === 'provider' || i.type === 'devtools')) { %>
|
|
9
39
|
import <%= integration.jsName %> from '<%= relativePath(integration.path, true) %>'
|
|
10
40
|
<% } %><% if (addOnEnabled.paraglide) { %>
|
|
11
|
-
import { getLocale } from '
|
|
41
|
+
import { getLocale } from '#/paraglide/runtime'
|
|
12
42
|
<% } %>
|
|
13
43
|
import appCss from '../styles.css?url'
|
|
14
44
|
<% if (addOnEnabled["apollo-client"]) { %>
|
|
@@ -17,7 +47,7 @@ import type { ApolloClientIntegration } from "@apollo/client-integration-tanstac
|
|
|
17
47
|
<% if (addOnEnabled["tanstack-query"]) { %>
|
|
18
48
|
import type { QueryClient } from '@tanstack/react-query'
|
|
19
49
|
<% if (addOnEnabled.tRPC) { %>
|
|
20
|
-
import type { TRPCRouter } from '
|
|
50
|
+
import type { TRPCRouter } from '#/integrations/trpc/router'
|
|
21
51
|
import type { TRPCOptionsProxy } from '@trpc/tanstack-react-query'
|
|
22
52
|
<% } %>
|
|
23
53
|
<% } %>
|
|
@@ -93,3 +123,4 @@ function RootDocument({ children }: { children: React.ReactNode }) {
|
|
|
93
123
|
</html>
|
|
94
124
|
)
|
|
95
125
|
}
|
|
126
|
+
<% } %>
|
|
@@ -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,33 +1,28 @@
|
|
|
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
|
<% } -%>
|
|
7
|
+
<% if (routerOnly) { %>
|
|
8
|
+
import { tanstackRouter } from '@tanstack/router-plugin/vite'
|
|
9
|
+
<% } else { %>
|
|
6
10
|
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
|
|
11
|
+
<% } %>
|
|
7
12
|
import viteReact from '@vitejs/plugin-react'
|
|
8
|
-
import viteTsConfigPaths from 'vite-tsconfig-paths'
|
|
9
|
-
import { fileURLToPath, URL } from 'node:url'
|
|
10
13
|
import tailwindcss from "@tailwindcss/vite"
|
|
11
14
|
<% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
|
|
12
15
|
<% } %>
|
|
13
16
|
|
|
14
17
|
const config = defineConfig({
|
|
15
|
-
resolve: {
|
|
16
|
-
alias: {
|
|
17
|
-
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
18
|
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
21
19
|
project: './project.inlang',
|
|
22
20
|
outdir: './src/paraglide',
|
|
23
|
-
strategy: ['url'],
|
|
21
|
+
strategy: ['url', "baseLocale"],
|
|
24
22
|
}), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %>
|
|
25
|
-
|
|
26
|
-
viteTsConfigPaths({
|
|
27
|
-
projects: ['./tsconfig.json'],
|
|
28
|
-
}),
|
|
23
|
+
tsconfigPaths({ projects: ['./tsconfig.json'] }),
|
|
29
24
|
tailwindcss(),
|
|
30
|
-
tanstackStart()
|
|
25
|
+
<% if (routerOnly) { %>tanstackRouter({ target: 'react', autoCodeSplitting: true }),<% } else { %>tanstackStart(),<% } %>
|
|
31
26
|
viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
32
27
|
babel: {
|
|
33
28
|
plugins: ["babel-plugin-react-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
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<% if (!routerOnly) { ignoreFile() } %>
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title><%= projectName %></title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="app"></div>
|
|
11
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<% if (!routerOnly) { ignoreFile() } %>
|
|
2
|
+
import { render } from 'solid-js/web'
|
|
3
|
+
import { RouterProvider, createRouter } from '@tanstack/solid-router'
|
|
4
|
+
import { routeTree } from './routeTree.gen'
|
|
5
|
+
|
|
6
|
+
const router = createRouter({
|
|
7
|
+
routeTree,
|
|
8
|
+
defaultPreload: 'intent',
|
|
9
|
+
defaultPreloadStaleTime: 0,
|
|
10
|
+
scrollRestoration: true,
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
declare module '@tanstack/solid-router' {
|
|
14
|
+
interface Register {
|
|
15
|
+
router: typeof router
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const rootElement = document.getElementById('app')!
|
|
20
|
+
|
|
21
|
+
if (!rootElement.innerHTML) {
|
|
22
|
+
render(() => <RouterProvider router={router} />, rootElement)
|
|
23
|
+
}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
<% if (routerOnly) { %>
|
|
2
|
+
import { Outlet, createRootRoute } from '@tanstack/solid-router'
|
|
3
|
+
import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
|
|
4
|
+
|
|
5
|
+
import '../styles.css'
|
|
6
|
+
|
|
7
|
+
export const Route = createRootRoute({
|
|
8
|
+
component: RootComponent,
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
function RootComponent() {
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<Outlet />
|
|
15
|
+
<TanStackRouterDevtools position="bottom-right" />
|
|
16
|
+
</>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
19
|
+
<% } else { %>
|
|
1
20
|
import { HeadContent, Outlet, Scripts, createRootRouteWithContext } from '@tanstack/solid-router'
|
|
2
21
|
import { TanStackRouterDevtools } from '@tanstack/solid-router-devtools'
|
|
3
22
|
|
|
@@ -47,3 +66,4 @@ function RootComponent() {
|
|
|
47
66
|
</html>
|
|
48
67
|
);
|
|
49
68
|
}
|
|
69
|
+
<% } %>
|
|
@@ -2,7 +2,11 @@ import { defineConfig } from "vite";
|
|
|
2
2
|
import { devtools } from '@tanstack/devtools-vite'
|
|
3
3
|
import viteTsConfigPaths from 'vite-tsconfig-paths'
|
|
4
4
|
import tailwindcss from "@tailwindcss/vite"
|
|
5
|
+
<% if (routerOnly) { %>
|
|
6
|
+
import { tanstackRouter } from '@tanstack/router-plugin/vite'
|
|
7
|
+
<% } else { %>
|
|
5
8
|
import { tanstackStart } from "@tanstack/solid-start/plugin/vite";
|
|
9
|
+
<% } %>
|
|
6
10
|
import solidPlugin from 'vite-plugin-solid';
|
|
7
11
|
<% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
|
|
8
12
|
<% } %>
|
|
@@ -15,7 +19,7 @@ export default defineConfig({
|
|
|
15
19
|
projects: ['./tsconfig.json'],
|
|
16
20
|
}),
|
|
17
21
|
tailwindcss(),
|
|
18
|
-
tanstackStart()
|
|
19
|
-
solidPlugin({ ssr: true }),
|
|
22
|
+
<% if (routerOnly) { %>tanstackRouter({ target: 'solid', autoCodeSplitting: true }),<% } else { %>tanstackStart(),<% } %>
|
|
23
|
+
solidPlugin(<% if (!routerOnly) { %>{ ssr: true }<% } %>),
|
|
20
24
|
],
|
|
21
25
|
})
|
|
@@ -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/dist/package-json.js
CHANGED
|
@@ -49,6 +49,7 @@ export function createPackageJSON(options) {
|
|
|
49
49
|
jsx: 'tsx',
|
|
50
50
|
fileRouter: options.mode === 'file-router',
|
|
51
51
|
codeRouter: options.mode === 'code-router',
|
|
52
|
+
routerOnly: options.routerOnly === true,
|
|
52
53
|
addOnEnabled: options.chosenAddOns.reduce((acc, addon) => {
|
|
53
54
|
acc[addon.id] = true;
|
|
54
55
|
return acc;
|
|
@@ -71,6 +72,25 @@ export function createPackageJSON(options) {
|
|
|
71
72
|
if (options.starter) {
|
|
72
73
|
packageJSON = mergePackageJSON(packageJSON, options.starter.packageAdditions);
|
|
73
74
|
}
|
|
75
|
+
if (options.routerOnly) {
|
|
76
|
+
if (options.framework.id === 'react-cra') {
|
|
77
|
+
delete packageJSON.dependencies?.['@tanstack/react-start'];
|
|
78
|
+
delete packageJSON.dependencies?.['@tanstack/react-router-ssr-query'];
|
|
79
|
+
packageJSON.devDependencies = {
|
|
80
|
+
...(packageJSON.devDependencies ?? {}),
|
|
81
|
+
'@tanstack/router-plugin': packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? '^1.132.0',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (options.framework.id === 'solid') {
|
|
85
|
+
delete packageJSON.dependencies?.['@tanstack/solid-start'];
|
|
86
|
+
delete packageJSON.dependencies?.['@tanstack/solid-router-ssr-query'];
|
|
87
|
+
delete packageJSON.scripts?.start;
|
|
88
|
+
packageJSON.devDependencies = {
|
|
89
|
+
...(packageJSON.devDependencies ?? {}),
|
|
90
|
+
'@tanstack/router-plugin': packageJSON.devDependencies?.['@tanstack/router-plugin'] ?? '^1.133.20',
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
74
94
|
packageJSON.dependencies = sortObject((packageJSON.dependencies ?? {}));
|
|
75
95
|
packageJSON.devDependencies = sortObject((packageJSON.devDependencies ?? {}));
|
|
76
96
|
return packageJSON;
|
package/dist/template-file.js
CHANGED
|
@@ -82,6 +82,7 @@ export function createTemplateFile(environment, options) {
|
|
|
82
82
|
jsx: 'tsx',
|
|
83
83
|
fileRouter: options.mode === 'file-router',
|
|
84
84
|
codeRouter: options.mode === 'code-router',
|
|
85
|
+
routerOnly: options.routerOnly === true,
|
|
85
86
|
addOnEnabled,
|
|
86
87
|
addOnOption: options.addOnOptions,
|
|
87
88
|
addOns: options.chosenAddOns,
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1274,6 +1274,7 @@ export interface Options {
|
|
|
1274
1274
|
chosenAddOns: Array<AddOn>;
|
|
1275
1275
|
addOnOptions: Record<string, Record<string, any>>;
|
|
1276
1276
|
starter?: Starter | undefined;
|
|
1277
|
+
routerOnly?: boolean;
|
|
1277
1278
|
}
|
|
1278
1279
|
export type SerializedOptions = Omit<Options, 'chosenAddOns' | 'starter' | 'framework'> & {
|
|
1279
1280
|
chosenAddOns: Array<string>;
|
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,
|