@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.
Files changed (156) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
  3. package/dist/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
  4. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
  5. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
  6. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
  7. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
  8. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
  9. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
  10. package/dist/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
  11. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
  12. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
  13. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  14. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  15. package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  16. package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  17. package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  18. package/dist/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  19. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  20. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  21. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  22. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  23. package/dist/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  24. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  25. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  26. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  27. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  28. package/dist/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  29. package/dist/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  30. package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  31. package/dist/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  32. package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  33. package/dist/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  34. package/dist/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  35. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  36. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  37. package/dist/frameworks/react/add-ons/t3env/README.md +1 -1
  38. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  39. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  40. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  41. package/dist/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  42. package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
  43. package/dist/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  44. package/dist/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  45. package/dist/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  46. package/dist/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  47. package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  48. package/dist/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  49. package/dist/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  50. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  51. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  52. package/dist/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  53. package/dist/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  54. package/dist/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  55. package/dist/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  56. package/dist/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  57. package/dist/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  58. package/dist/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  59. package/dist/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  60. package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  61. package/dist/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  62. package/dist/frameworks/react/project/base/_dot_gitignore +0 -1
  63. package/dist/frameworks/react/project/base/index.html.ejs +13 -0
  64. package/dist/frameworks/react/project/base/package.json +5 -2
  65. package/dist/frameworks/react/project/base/src/main.tsx.ejs +24 -0
  66. package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
  67. package/dist/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  68. package/dist/frameworks/react/project/base/vite.config.ts.ejs +8 -13
  69. package/dist/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  70. package/dist/frameworks/solid/project/base/_dot_gitignore +0 -1
  71. package/dist/frameworks/solid/project/base/index.html.ejs +13 -0
  72. package/dist/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
  73. package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
  74. package/dist/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
  75. package/dist/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  76. package/dist/package-json.js +20 -0
  77. package/dist/template-file.js +1 -0
  78. package/dist/types/types.d.ts +1 -0
  79. package/package.json +1 -1
  80. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
  81. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
  82. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
  83. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
  84. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
  85. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
  86. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
  87. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
  88. package/src/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
  89. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
  90. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
  91. package/src/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  92. package/src/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  93. package/src/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  94. package/src/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  95. package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  96. package/src/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  97. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  98. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  99. package/src/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  100. package/src/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  101. package/src/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  102. package/src/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  103. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  104. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  105. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  106. package/src/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  107. package/src/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  108. package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  109. package/src/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  110. package/src/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  111. package/src/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  112. package/src/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  113. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  114. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  115. package/src/frameworks/react/add-ons/t3env/README.md +1 -1
  116. package/src/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  117. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  118. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  119. package/src/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  120. package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +2 -2
  121. package/src/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  122. package/src/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  123. package/src/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  124. package/src/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  125. package/src/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  126. package/src/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  127. package/src/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  128. package/src/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  129. package/src/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  130. package/src/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  131. package/src/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  132. package/src/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  133. package/src/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  134. package/src/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  135. package/src/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  136. package/src/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  137. package/src/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  138. package/src/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  139. package/src/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  140. package/src/frameworks/react/project/base/_dot_gitignore +0 -1
  141. package/src/frameworks/react/project/base/index.html.ejs +13 -0
  142. package/src/frameworks/react/project/base/package.json +5 -2
  143. package/src/frameworks/react/project/base/src/main.tsx.ejs +24 -0
  144. package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +33 -2
  145. package/src/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  146. package/src/frameworks/react/project/base/vite.config.ts.ejs +8 -13
  147. package/src/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  148. package/src/frameworks/solid/project/base/_dot_gitignore +0 -1
  149. package/src/frameworks/solid/project/base/index.html.ejs +13 -0
  150. package/src/frameworks/solid/project/base/src/main.tsx.ejs +23 -0
  151. package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +20 -0
  152. package/src/frameworks/solid/project/base/vite.config.ts.ejs +6 -2
  153. package/src/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  154. package/src/package-json.ts +24 -0
  155. package/src/template-file.ts +1 -0
  156. 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 '@/components/RemyAssistant'
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 '@/components/TalkCard'
6
- import RemyAssistant from '@/components/RemyAssistant'
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 "@/lib/resume-ai-hook";
7
- import type { ResumeChatMessages } from "@/lib/resume-ai-hook";
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 "@/lib/utils"
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",
@@ -1,6 +1,6 @@
1
1
  import * as React from "react"
2
2
 
3
- import { cn } from "@/lib/utils"
3
+ import { cn } from "#/lib/utils"
4
4
 
5
5
  function Card({ className, ...props }: React.ComponentProps<"div">) {
6
6
  return (
@@ -2,7 +2,7 @@ import * as React from "react"
2
2
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
3
3
  import { CheckIcon } from "lucide-react"
4
4
 
5
- import { cn } from "@/lib/utils"
5
+ import { cn } from "#/lib/utils"
6
6
 
7
7
  function Checkbox({
8
8
  className,
@@ -3,7 +3,7 @@
3
3
  import * as React from "react"
4
4
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
5
5
 
6
- import { cn } from "@/lib/utils"
6
+ import { cn } from "#/lib/utils"
7
7
 
8
8
  function HoverCard({
9
9
  ...props
@@ -1,7 +1,7 @@
1
1
  import * as React from "react"
2
2
  import * as SeparatorPrimitive from "@radix-ui/react-separator"
3
3
 
4
- import { cn } from "@/lib/utils"
4
+ import { cn } from "#/lib/utils"
5
5
 
6
6
  function Separator({
7
7
  className,
@@ -10,7 +10,7 @@ import {
10
10
  getAllJobs,
11
11
  getAllEducation,
12
12
  searchExperience,
13
- } from '@/lib/resume-tools'
13
+ } from '#/lib/resume-tools'
14
14
 
15
15
  export const Route = createFileRoute('/api/resume-chat')({
16
16
  server: {
@@ -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 '@/components/ui/card'
7
- import { Checkbox } from '@/components/ui/checkbox'
8
- import { Badge } from '@/components/ui/badge'
9
- import { Separator } from '@/components/ui/separator'
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 '@/components/ui/hover-card'
14
+ } from '#/components/ui/hover-card'
15
15
 
16
- import ResumeAssistant from '@/components/ResumeAssistant'
16
+ import ResumeAssistant from '#/components/ResumeAssistant'
17
17
 
18
18
  export const Route = createFileRoute('/')({
19
19
  component: App,
@@ -3,7 +3,6 @@ node_modules
3
3
  dist
4
4
  dist-ssr
5
5
  *.local
6
- count.txt
7
6
  .env
8
7
  .nitro
9
8
  .tanstack
@@ -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 '@/paraglide/runtime'
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 '@/integrations/trpc/router'
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
- // this is the plugin that enables path aliases
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 [...tanstackConfig]
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
+ ]
@@ -10,4 +10,3 @@ dist-ssr
10
10
  .output
11
11
  .vinxi
12
12
  __unconfig*
13
- count.txt
@@ -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 [...tanstackConfig];
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
+ ];
@@ -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;
@@ -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,
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/create",
3
- "version": "0.61.2",
3
+ "version": "0.61.4",
4
4
  "description": "TanStack Application Builder Engine",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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 '@/lib/demo-ai-hook'
9
- import type { ChatMessages } from '@/lib/demo-ai-hook'
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 '@/data/demo-guitars'
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 '@/lib/demo-guitar-tools'
9
+ import { recommendGuitarToolDef } from '#/lib/demo-guitar-tools'
10
10
 
11
11
  const recommendGuitarToolClient = recommendGuitarToolDef.client(({ id }) => ({
12
12
  id: +id,
@@ -1,6 +1,6 @@
1
1
  import { toolDefinition } from '@tanstack/ai'
2
2
  import { z } from 'zod'
3
- import guitars from '@/data/demo-guitars'
3
+ import guitars from '#/data/demo-guitars'
4
4
 
5
5
  // Tool definition for getting guitars
6
6
  export const getGuitarsToolDef = toolDefinition({
@@ -11,12 +11,12 @@ import {
11
11
  } from 'lucide-react'
12
12
  import { Streamdown } from 'streamdown'
13
13
 
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'
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 '@/components/demo-GuitarRecommendation'
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 '@/lib/demo-guitar-tools'
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 { Link, createFileRoute } from '@tanstack/react-router'
2
2
 
3
- import guitars from '@/data/demo-guitars'
3
+ import guitars from '#/data/demo-guitars'
4
4
 
5
5
  export const Route = createFileRoute('/demo/guitars/$guitarId')({
6
6
  component: RouteComponent,
@@ -1,6 +1,6 @@
1
1
  import { Link, createFileRoute } from '@tanstack/react-router'
2
2
 
3
- import guitars from '@/data/demo-guitars'
3
+ import guitars from '#/data/demo-guitars'
4
4
 
5
5
  export const Route = createFileRoute('/demo/guitars/')({
6
6
  component: GuitarsIndex,
@@ -1,4 +1,4 @@
1
- import { authClient } from "@/lib/auth-client";
1
+ import { authClient } from "#/lib/auth-client";
2
2
  import { Link } from "@tanstack/react-router";
3
3
 
4
4
  export default function BetterAuthHeader() {
@@ -1,5 +1,5 @@
1
1
  import { createFileRoute } from '@tanstack/react-router'
2
- import { auth } from '@/lib/auth'
2
+ import { auth } from '#/lib/auth'
3
3
 
4
4
  export const Route = createFileRoute('/api/auth/$')({
5
5
  server: {
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute } from "@tanstack/react-router";
2
2
  import { useState } from "react";
3
- import { authClient } from "@/lib/auth-client";
3
+ import { authClient } from "#/lib/auth-client";
4
4
 
5
5
  export const Route = createFileRoute("/demo/better-auth")({
6
6
  component: BetterAuthDemo,
@@ -1,6 +1,6 @@
1
1
  import { useState } from 'react'
2
2
 
3
- import { useChat, useMessages } from '@/hooks/demo.useChat'
3
+ import { useChat, useMessages } from '#/hooks/demo.useChat'
4
4
 
5
5
  import Messages from './demo.messages'
6
6