@tanstack/create 0.61.1 → 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.
Files changed (139) hide show
  1. package/CHANGELOG.md +23 -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/convex/assets/src/routes/demo/convex.tsx +1 -1
  14. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  15. package/dist/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  16. package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  17. package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  18. package/dist/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  19. package/dist/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  20. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  21. package/dist/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  22. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  23. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  24. package/dist/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  25. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  26. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  27. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  28. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  29. package/dist/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  30. package/dist/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  31. package/dist/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  32. package/dist/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  33. package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  34. package/dist/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  35. package/dist/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  36. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  37. package/dist/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  38. package/dist/frameworks/react/add-ons/t3env/README.md +1 -1
  39. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  40. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  41. package/dist/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  42. package/dist/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  43. package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +66 -7
  44. package/dist/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  45. package/dist/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  46. package/dist/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  47. package/dist/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  48. package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  49. package/dist/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  50. package/dist/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  51. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  52. package/dist/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  53. package/dist/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  54. package/dist/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  55. package/dist/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  56. package/dist/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  57. package/dist/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  58. package/dist/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  59. package/dist/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  60. package/dist/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  61. package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  62. package/dist/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  63. package/dist/frameworks/react/project/base/package.json +5 -2
  64. package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +2 -2
  65. package/dist/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  66. package/dist/frameworks/react/project/base/vite.config.ts.ejs +2 -11
  67. package/dist/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  68. package/dist/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  69. package/dist/package-json.js +7 -1
  70. package/package.json +1 -1
  71. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +2 -2
  72. package/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +1 -1
  73. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +1 -1
  74. package/src/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +1 -1
  75. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +5 -5
  76. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +1 -1
  77. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/$guitarId.tsx +1 -1
  78. package/src/frameworks/react/add-ons/ai/assets/src/routes/demo/guitars/index.tsx +1 -1
  79. package/src/frameworks/react/add-ons/better-auth/assets/src/integrations/better-auth/header-user.tsx +1 -1
  80. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +1 -1
  81. package/src/frameworks/react/add-ons/better-auth/assets/src/routes/demo/better-auth.tsx +1 -1
  82. package/src/frameworks/react/add-ons/convex/assets/src/routes/demo/convex.tsx +1 -1
  83. package/src/frameworks/react/add-ons/db/assets/src/components/demo.chat-area.tsx +1 -1
  84. package/src/frameworks/react/add-ons/db/assets/src/components/demo.messages.tsx +1 -1
  85. package/src/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +1 -1
  86. package/src/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat.tsx +1 -1
  87. package/src/frameworks/react/add-ons/drizzle/assets/src/routes/demo/drizzle.tsx.ejs +2 -2
  88. package/src/frameworks/react/add-ons/form/assets/src/components/demo.FormComponents.tsx.ejs +15 -11
  89. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.address.tsx.ejs +1 -1
  90. package/src/frameworks/react/add-ons/form/assets/src/routes/demo/form.simple.tsx.ejs +1 -1
  91. package/src/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +1 -1
  92. package/src/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +2 -2
  93. package/src/frameworks/react/add-ons/neon/assets/src/routes/demo/neon.tsx +1 -1
  94. package/src/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +1 -1
  95. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +3 -3
  96. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +2 -2
  97. package/src/frameworks/react/add-ons/oRPC/assets/src/routes/demo/orpc-todo.tsx +1 -1
  98. package/src/frameworks/react/add-ons/paraglide/assets/src/components/LocaleSwitcher.tsx.ejs +2 -2
  99. package/src/frameworks/react/add-ons/paraglide/assets/src/routes/demo.i18n.tsx.ejs +1 -1
  100. package/src/frameworks/react/add-ons/prisma/assets/src/routes/demo/prisma.tsx.ejs +1 -1
  101. package/src/frameworks/react/add-ons/shadcn/assets/components.json +5 -5
  102. package/src/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +2 -1
  103. package/src/frameworks/react/add-ons/store/assets/src/routes/demo/store.tsx.ejs +1 -1
  104. package/src/frameworks/react/add-ons/storybook/assets/src/routes/demo/storybook.tsx +5 -5
  105. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi.tsx +1 -1
  106. package/src/frameworks/react/add-ons/strapi/assets/src/routes/demo/strapi_.$articleId.tsx +1 -1
  107. package/src/frameworks/react/add-ons/t3env/README.md +1 -1
  108. package/src/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +1 -1
  109. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/api.trpc.$.tsx +1 -1
  110. package/src/frameworks/react/add-ons/tRPC/assets/src/routes/demo/trpc-todo.tsx +1 -1
  111. package/src/frameworks/react/add-ons/table/assets/src/routes/demo/table.tsx.ejs +2 -2
  112. package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +66 -7
  113. package/src/frameworks/react/examples/events/assets/src/components/RemyAssistant.tsx +2 -2
  114. package/src/frameworks/react/examples/events/assets/src/components/SpeakerCard.tsx +1 -1
  115. package/src/frameworks/react/examples/events/assets/src/components/TalkCard.tsx +1 -1
  116. package/src/frameworks/react/examples/events/assets/src/components/ui/card.tsx +1 -1
  117. package/src/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +1 -1
  118. package/src/frameworks/react/examples/events/assets/src/routes/index.tsx +4 -4
  119. package/src/frameworks/react/examples/events/assets/src/routes/schedule.index.tsx +1 -1
  120. package/src/frameworks/react/examples/events/assets/src/routes/speakers.$slug.tsx +2 -2
  121. package/src/frameworks/react/examples/events/assets/src/routes/speakers.index.tsx +2 -2
  122. package/src/frameworks/react/examples/events/assets/src/routes/talks.$slug.tsx +1 -1
  123. package/src/frameworks/react/examples/events/assets/src/routes/talks.index.tsx +2 -2
  124. package/src/frameworks/react/examples/resume/assets/src/components/ResumeAssistant.tsx +2 -2
  125. package/src/frameworks/react/examples/resume/assets/src/components/ui/badge.tsx +1 -1
  126. package/src/frameworks/react/examples/resume/assets/src/components/ui/card.tsx +1 -1
  127. package/src/frameworks/react/examples/resume/assets/src/components/ui/checkbox.tsx +1 -1
  128. package/src/frameworks/react/examples/resume/assets/src/components/ui/hover-card.tsx +1 -1
  129. package/src/frameworks/react/examples/resume/assets/src/components/ui/separator.tsx +1 -1
  130. package/src/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +1 -1
  131. package/src/frameworks/react/examples/resume/assets/src/routes/index.tsx +6 -6
  132. package/src/frameworks/react/project/base/package.json +5 -2
  133. package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +2 -2
  134. package/src/frameworks/react/project/base/tsconfig.json.ejs +5 -5
  135. package/src/frameworks/react/project/base/vite.config.ts.ejs +2 -11
  136. package/src/frameworks/react/toolchains/eslint/assets/eslint.config.js +16 -1
  137. package/src/frameworks/solid/toolchains/eslint/assets/eslint.config.js +16 -1
  138. package/src/package-json.ts +12 -2
  139. package/tests/package-json.test.ts +29 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @tanstack/create
2
2
 
3
+ ## 0.61.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Improve generated React scaffold reliability and default lint ergonomics. ([`cc5857c`](https://github.com/TanStack/cli/commit/cc5857c5c212132852f37878e039071c5a9b1ac5))
8
+
9
+ - Migrate React template imports to package `imports` aliases (`#/*`) while preserving `@/*` compatibility during transition.
10
+ - Harden eslint toolchain templates for fresh apps by avoiding known parser/project and resolver issues.
11
+ - Fix generated shadcn utility import style for stricter eslint configs.
12
+ - Improve TanStack Form demo select contrast in dark mode.
13
+
14
+ ## 0.61.2
15
+
16
+ ### Patch Changes
17
+
18
+ - Improve generated app reliability and CLI compatibility. ([`791bef6`](https://github.com/TanStack/cli/commit/791bef6b5472df5b5e2bffe5c1714c4052a97ac3))
19
+
20
+ - Fix React Query provider scaffolding (including Query + tRPC combinations) so generated apps build correctly.
21
+ - Fix Prisma add-on package template rendering by exposing package-manager execute helper in `package.json.ejs` context.
22
+ - Restore `--tailwind` and `--no-tailwind` as deprecated compatibility flags that are accepted but ignored with clear warnings.
23
+ - Align CLI/docs examples with the current Tailwind-always-on behavior.
24
+ - Update Convex demo import to type-only `Id` import to avoid runtime resolution issues.
25
+
3
26
  ## 0.61.1
4
27
 
5
28
  ### Patch Changes
@@ -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,
@@ -4,7 +4,7 @@ import { useQuery, useMutation } from 'convex/react'
4
4
  import { Trash2, Plus, Check, Circle } from 'lucide-react'
5
5
 
6
6
  import { api } from '../../../convex/_generated/api'
7
- import { Id } from '../../../convex/_generated/dataModel'
7
+ import type { Id } from '../../../convex/_generated/dataModel'
8
8
 
9
9
  export const Route = createFileRoute('/demo/convex')({
10
10
  ssr: false,
@@ -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
 
@@ -1,4 +1,4 @@
1
- import type { Message } from '@/db-collections'
1
+ import type { Message } from '#/db-collections'
2
2
 
3
3
  export const getAvatarColor = (username: string) => {
4
4
  const colors = [
@@ -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 '@/db-collections'
4
+ import { messagesCollection, type Message } from '#/db-collections'
5
5
 
6
6
  import type { Collection } from '@tanstack/react-db'
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute } from '@tanstack/react-router'
2
2
 
3
- import ChatArea from '@/components/demo.chat-area'
3
+ import ChatArea from '#/components/demo.chat-area'
4
4
 
5
5
  export const Route = createFileRoute('/demo/db-chat')({
6
6
  component: App,
@@ -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 '@/db/index'
3
+ import { db } from '#/db/index'
4
4
  import { desc } from 'drizzle-orm'
5
- import { todos } from '@/db/schema'
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 '@/hooks/demo.form-context'
3
+ import { useFieldContext, useFormContext } from '#/hooks/demo.form-context'
4
4
  <% if (addOnEnabled.shadcn) { %>
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'
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 key={value.value} value={value.value}>
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 '@/hooks/demo.form'
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 '@/hooks/demo.form'
4
+ import { useAppForm } from '#/hooks/demo.form'
5
5
 
6
6
  <% if (codeRouter) { %>
7
7
  import type { RootRoute } from '@tanstack/react-router'
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute } from '@tanstack/react-router'
2
2
 
3
- import { addTodo, getTodos, subscribeToTodos } from '@/mcp-todos'
3
+ import { addTodo, getTodos, subscribeToTodos } from '#/mcp-todos'
4
4
 
5
5
  export const Route = createFileRoute('/api/mcp-todos')({
6
6
  server: {
@@ -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 '@/utils/mcp-handler'
5
+ import { handleMcpRequest } from '#/utils/mcp-handler'
6
6
 
7
- import { addTodo } from '@/mcp-todos'
7
+ import { addTodo } from '#/mcp-todos'
8
8
 
9
9
  const server = new McpServer({
10
10
  name: 'start-server',
@@ -1,7 +1,7 @@
1
1
  import { createServerFn } from '@tanstack/react-start'
2
2
  import { createFileRoute, useRouter } from '@tanstack/react-router'
3
3
 
4
- import { getClient } from '@/db'
4
+ import { getClient } from '#/db'
5
5
 
6
6
  const getTodos = createServerFn({
7
7
  method: 'GET',
@@ -7,7 +7,7 @@ import { createIsomorphicFn } from '@tanstack/react-start'
7
7
 
8
8
  import type { RouterClient } from '@orpc/server'
9
9
 
10
- import router from '@/orpc/router'
10
+ import router from '#/orpc/router'
11
11
 
12
12
  const getORPCClient = createIsomorphicFn()
13
13
  .server(() =>
@@ -1,4 +1,4 @@
1
- import '@/polyfill'
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 '@/orpc/schema'
11
- import router from '@/orpc/router'
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 '@/polyfill'
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 '@/orpc/router'
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 '@/orpc/client'
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 '@/paraglide/runtime'
5
- import { m } from '@/paraglide/messages'
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 "@/paraglide/messages";
3
+ import { m } from "#/paraglide/messages";
4
4
  import LocaleSwitcher from "../components/LocaleSwitcher";
5
5
 
6
6
  export const Route = createFileRoute("/demo/i18n")({
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute, useRouter } from '@tanstack/react-router'
2
2
  import { createServerFn } from '@tanstack/react-start'
3
- import { prisma } from '@/db'
3
+ import { prisma } from '#/db'
4
4
 
5
5
  const getTodos = createServerFn({
6
6
  method: 'GET',
@@ -11,11 +11,11 @@
11
11
  "prefix": ""
12
12
  },
13
13
  "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/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
  }
@@ -1,4 +1,5 @@
1
- import { clsx, type ClassValue } from "clsx"
1
+ import type { ClassValue } from 'clsx'
2
+ import { clsx } from "clsx"
2
3
  import { twMerge } from "tailwind-merge"
3
4
 
4
5
  export function cn(...inputs: ClassValue[]) {
@@ -1,7 +1,7 @@
1
1
  import { <% if (fileRouter) { %>createFileRoute<% } else { %>createRoute<% } %> } from '@tanstack/react-router'
2
2
  import { useStore } from '@tanstack/react-store'
3
3
 
4
- import { fullName, store } from '@/lib/demo-store'
4
+ import { fullName, store } from '#/lib/demo-store'
5
5
  <% if (codeRouter) { %>
6
6
  import type { RootRoute } from '@tanstack/react-router'
7
7
  <% } else { %>
@@ -1,11 +1,11 @@
1
1
  import { createFileRoute } from "@tanstack/react-router";
2
2
  import { useState } from "react";
3
3
 
4
- import { Dialog } from "@/components/storybook/dialog";
5
- import { Input } from "@/components/storybook/input";
6
- import { RadioGroup } from "@/components/storybook/radio-group";
7
- import { Slider } from "@/components/storybook/slider";
8
- import { Button } from "@/components/storybook/button";
4
+ import { Dialog } from "#/components/storybook/dialog";
5
+ import { Input } from "#/components/storybook/input";
6
+ import { RadioGroup } from "#/components/storybook/radio-group";
7
+ import { Slider } from "#/components/storybook/slider";
8
+ import { Button } from "#/components/storybook/button";
9
9
 
10
10
  export const Route = createFileRoute("/demo/storybook")({
11
11
  component: StorybookDemo,
@@ -1,4 +1,4 @@
1
- import { articles } from '@/lib/strapiClient'
1
+ import { articles } from '#/lib/strapiClient'
2
2
  import { createFileRoute, Link } from '@tanstack/react-router'
3
3
 
4
4
  export const Route = createFileRoute('/demo/strapi')({
@@ -1,4 +1,4 @@
1
- import { articles } from '@/lib/strapiClient'
1
+ import { articles } from '#/lib/strapiClient'
2
2
  import { createFileRoute, Link } from '@tanstack/react-router'
3
3
 
4
4
  export const Route = createFileRoute('/demo/strapi_/$articleId')({
@@ -7,7 +7,7 @@
7
7
  ### Usage
8
8
 
9
9
  ```ts
10
- import { env } from "@/env";
10
+ import { env } from "#/env";
11
11
 
12
12
  console.log(env.VITE_APP_TITLE);
13
13
  ```
@@ -1,4 +1,4 @@
1
1
  import { createTRPCContext } from "@trpc/tanstack-react-query";
2
- import type { TRPCRouter } from "@/integrations/trpc/router";
2
+ import type { TRPCRouter } from "#/integrations/trpc/router";
3
3
 
4
4
  export const { TRPCProvider, useTRPC } = createTRPCContext<TRPCRouter>();
@@ -1,6 +1,6 @@
1
1
  import { createServerFileRoute } from '@tanstack/react-start/server'
2
2
  import { fetchRequestHandler } from '@trpc/server/adapters/fetch'
3
- import { trpcRouter } from '@/integrations/trpc/router'
3
+ import { trpcRouter } from '#/integrations/trpc/router'
4
4
  import { createFileRoute } from '@tanstack/react-router'
5
5
 
6
6
  function handler({ request }: { request: Request }) {
@@ -1,7 +1,7 @@
1
1
  import { useCallback, useState } from 'react'
2
2
  import { createFileRoute } from '@tanstack/react-router'
3
3
  import { useMutation, useQuery } from '@tanstack/react-query'
4
- import { useTRPC } from '@/integrations/trpc/react'
4
+ import { useTRPC } from '#/integrations/trpc/react'
5
5
 
6
6
  export const Route = createFileRoute('/demo/trpc-todo')({
7
7
  component: TRPCTodos,
@@ -11,7 +11,7 @@ import {
11
11
  } from '@tanstack/react-table'
12
12
  import { compareItems, rankItem } from '@tanstack/match-sorter-utils'
13
13
 
14
- import { makeData } from '@/data/demo-table-data'
14
+ import { makeData } from '#/data/demo-table-data'
15
15
 
16
16
  import type {
17
17
  Column,
@@ -24,7 +24,7 @@ import type { RankingInfo } from '@tanstack/match-sorter-utils'
24
24
  <% if (codeRouter) { %>
25
25
  import type { RootRoute } from '@tanstack/react-router'
26
26
  <% } %>
27
- import type { Person } from '@/data/demo-table-data'
27
+ import type { Person } from '#/data/demo-table-data'
28
28
  <% if (fileRouter) { %>
29
29
  export const Route = createFileRoute('/demo/table')({
30
30
  component: TableDemo,
@@ -1,10 +1,12 @@
1
1
  <% if (addOnEnabled.tRPC) { %>
2
- import { QueryClient } from "@tanstack/react-query";
2
+ import type { ReactNode } from 'react'
3
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
3
4
  import superjson from "superjson";
4
5
  import { createTRPCClient, httpBatchStreamLink } from "@trpc/client";
5
6
  import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query";
6
7
 
7
- import type { TRPCRouter } from "@/integrations/trpc/router";
8
+ import type { TRPCRouter } from "#/integrations/trpc/router";
9
+ import { TRPCProvider } from '#/integrations/trpc/react'
8
10
 
9
11
  function getUrl() {
10
12
  const base = (() => {
@@ -23,7 +25,18 @@ export const trpcClient = createTRPCClient<TRPCRouter>({
23
25
  ],
24
26
  });
25
27
 
28
+ let context:
29
+ | {
30
+ queryClient: QueryClient
31
+ trpc: ReturnType<typeof createTRPCOptionsProxy<TRPCRouter>>
32
+ }
33
+ | undefined
34
+
26
35
  export function getContext() {
36
+ if (context) {
37
+ return context
38
+ }
39
+
27
40
  const queryClient = new QueryClient({
28
41
  defaultOptions: {
29
42
  dehydrate: { serializeData: superjson.serialize },
@@ -35,18 +48,64 @@ export function getContext() {
35
48
  client: trpcClient,
36
49
  queryClient: queryClient,
37
50
  });
38
- return {
51
+ context = {
39
52
  queryClient,
40
53
  trpc: serverHelpers,
41
- };
54
+ }
55
+
56
+ return context
57
+ }
58
+
59
+ export default function TanStackQueryProvider({
60
+ children,
61
+ }: {
62
+ children: ReactNode
63
+ }) {
64
+ const { queryClient } = getContext()
65
+
66
+ return (
67
+ <QueryClientProvider client={queryClient}>
68
+ <TRPCProvider trpcClient={trpcClient} queryClient={queryClient}>
69
+ {children}
70
+ </TRPCProvider>
71
+ </QueryClientProvider>
72
+ )
42
73
  }
43
74
  <% } else { %>
44
- import { QueryClient } from '@tanstack/react-query'
75
+ import type { ReactNode } from 'react'
76
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
77
+
78
+ let context:
79
+ | {
80
+ queryClient: QueryClient
81
+ }
82
+ | undefined
45
83
 
46
84
  export function getContext() {
85
+ if (context) {
86
+ return context
87
+ }
88
+
47
89
  const queryClient = new QueryClient();
48
- return {
90
+
91
+ context = {
49
92
  queryClient,
50
- };
93
+ }
94
+
95
+ return context
96
+ }
97
+
98
+ export default function TanStackQueryProvider({
99
+ children,
100
+ }: {
101
+ children: ReactNode
102
+ }) {
103
+ const { queryClient } = getContext()
104
+
105
+ return (
106
+ <QueryClientProvider client={queryClient}>
107
+ {children}
108
+ </QueryClientProvider>
109
+ )
51
110
  }
52
111
  <% } %>
@@ -3,8 +3,8 @@ import { Send, X, ChefHat, Croissant } from 'lucide-react'
3
3
  import { Streamdown } from 'streamdown'
4
4
  import { Store } from '@tanstack/store'
5
5
 
6
- import { useConferenceChat } from '@/lib/conference-ai-hook'
7
- import type { ConferenceChatMessages } from '@/lib/conference-ai-hook'
6
+ import { useConferenceChat } from '#/lib/conference-ai-hook'
7
+ import type { ConferenceChatMessages } from '#/lib/conference-ai-hook'
8
8
 
9
9
  function Messages({ messages }: { messages: ConferenceChatMessages }) {
10
10
  const messagesContainerRef = useRef<HTMLDivElement>(null)
@@ -3,7 +3,7 @@ import { MapPin } from 'lucide-react'
3
3
 
4
4
  import { type Speaker } from 'content-collections'
5
5
 
6
- import { Card, CardContent } from '@/components/ui/card'
6
+ import { Card, CardContent } from '#/components/ui/card'
7
7
 
8
8
  interface SpeakerCardProps {
9
9
  speaker: Speaker