@tanstack/create 0.49.2 → 0.59.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 (294) hide show
  1. package/CHANGELOG.md +603 -0
  2. package/dist/add-ons.js +42 -2
  3. package/dist/add-to-app.js +36 -7
  4. package/dist/custom-add-ons/add-on.js +2 -26
  5. package/dist/custom-add-ons/starter.js +1 -2
  6. package/dist/file-helpers.js +11 -10
  7. package/dist/frameworks/react/add-ons/ai/assets/src/data/demo-guitars.ts +93 -0
  8. package/dist/frameworks/react/add-ons/ai/assets/src/hooks/demo-useAudioRecorder.ts +85 -0
  9. package/dist/frameworks/react/add-ons/ai/assets/src/hooks/demo-useTTS.ts +78 -0
  10. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-ai-hook.ts +22 -0
  11. package/dist/frameworks/react/add-ons/ai/assets/src/lib/demo-guitar-tools.ts +40 -0
  12. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.chat.ts +99 -0
  13. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.image.ts +72 -0
  14. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.structured.ts +136 -0
  15. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.transcription.ts +89 -0
  16. package/dist/frameworks/react/add-ons/ai/assets/src/routes/demo/api.ai.tts.ts +81 -0
  17. package/dist/frameworks/react/add-ons/ai/info.json +1 -1
  18. package/dist/frameworks/react/add-ons/apollo-client/info.json +1 -1
  19. package/dist/frameworks/react/add-ons/better-auth/assets/src/lib/auth-client.ts +3 -0
  20. package/dist/frameworks/react/add-ons/better-auth/assets/src/lib/auth.ts +9 -0
  21. package/dist/frameworks/react/add-ons/better-auth/assets/src/routes/api/auth/$.ts +11 -0
  22. package/dist/frameworks/react/add-ons/better-auth/info.json +0 -2
  23. package/dist/frameworks/react/add-ons/clerk/info.json +0 -1
  24. package/dist/frameworks/react/add-ons/convex/assets/convex/schema.ts +14 -0
  25. package/dist/frameworks/react/add-ons/convex/assets/convex/todos.ts +43 -0
  26. package/dist/frameworks/react/add-ons/db/assets/src/db-collections/index.ts +20 -0
  27. package/dist/frameworks/react/add-ons/db/assets/src/hooks/demo.useChat.ts +62 -0
  28. package/dist/frameworks/react/add-ons/db/assets/src/routes/demo/db-chat-api.ts +83 -0
  29. package/dist/frameworks/react/add-ons/db/info.json +1 -1
  30. package/dist/frameworks/react/add-ons/drizzle/info.json +1 -1
  31. package/dist/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
  32. package/dist/frameworks/react/add-ons/form/assets/src/hooks/demo.form-context.ts +4 -0
  33. package/dist/frameworks/react/add-ons/form/assets/src/hooks/demo.form.ts +22 -0
  34. package/dist/frameworks/react/add-ons/mcp/assets/src/mcp-todos.ts +51 -0
  35. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/demo/api.mcp-todos.ts +37 -0
  36. package/dist/frameworks/react/add-ons/mcp/assets/src/routes/mcp.ts +53 -0
  37. package/dist/frameworks/react/add-ons/mcp/assets/src/utils/mcp-handler.ts +61 -0
  38. package/dist/frameworks/react/add-ons/mcp/info.json +1 -2
  39. package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +10 -0
  40. package/dist/frameworks/react/add-ons/neon/assets/src/db.ts +13 -0
  41. package/dist/frameworks/react/add-ons/neon/info.json +1 -2
  42. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/client.ts +29 -0
  43. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/router/index.ts +6 -0
  44. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/router/todos.ts +20 -0
  45. package/dist/frameworks/react/add-ons/oRPC/assets/src/orpc/schema.ts +6 -0
  46. package/dist/frameworks/react/add-ons/oRPC/assets/src/polyfill.ts +21 -0
  47. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.$.ts +77 -0
  48. package/dist/frameworks/react/add-ons/oRPC/assets/src/routes/api.rpc.$.ts +29 -0
  49. package/dist/frameworks/react/add-ons/oRPC/info.json +1 -1
  50. package/dist/frameworks/react/add-ons/paraglide/info.json +1 -1
  51. package/dist/frameworks/react/add-ons/prisma/info.json +1 -1
  52. package/dist/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
  53. package/dist/frameworks/react/add-ons/sentry/info.json +1 -2
  54. package/dist/frameworks/react/add-ons/shadcn/assets/src/lib/utils.ts +6 -0
  55. package/dist/frameworks/react/add-ons/store/assets/src/lib/demo-store.ts +13 -0
  56. package/dist/frameworks/react/add-ons/storybook/assets/_dot_storybook/main.ts +17 -0
  57. package/dist/frameworks/react/add-ons/storybook/assets/_dot_storybook/preview.ts +15 -0
  58. package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/button.stories.ts +67 -0
  59. package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/index.ts +14 -0
  60. package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/input.stories.ts +43 -0
  61. package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/radio-group.stories.ts +53 -0
  62. package/dist/frameworks/react/add-ons/storybook/assets/src/components/storybook/slider.stories.ts +55 -0
  63. package/dist/frameworks/react/add-ons/strapi/assets/src/lib/strapiClient.ts +7 -0
  64. package/dist/frameworks/react/add-ons/t3env/assets/src/env.ts +39 -0
  65. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/init.ts +9 -0
  66. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/react.ts +4 -0
  67. package/dist/frameworks/react/add-ons/tRPC/assets/src/integrations/trpc/router.ts +27 -0
  68. package/dist/frameworks/react/add-ons/tRPC/info.json +1 -1
  69. package/dist/frameworks/react/add-ons/table/assets/src/data/demo-table-data.ts +50 -0
  70. package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
  71. package/dist/frameworks/react/add-ons/workos/info.json +0 -1
  72. package/dist/frameworks/react/examples/events/assets/content-collections.ts +56 -0
  73. package/dist/frameworks/react/examples/events/assets/src/lib/conference-ai-hook.ts +26 -0
  74. package/dist/frameworks/react/examples/events/assets/src/lib/conference-tools.ts +210 -0
  75. package/dist/frameworks/react/examples/events/assets/src/lib/utils.ts +6 -0
  76. package/dist/frameworks/react/examples/events/assets/src/routes/api.remy-chat.ts +121 -0
  77. package/dist/frameworks/react/examples/resume/assets/content-collections.ts +36 -0
  78. package/dist/frameworks/react/examples/resume/assets/src/lib/resume-ai-hook.ts +21 -0
  79. package/dist/frameworks/react/examples/resume/assets/src/lib/resume-tools.ts +165 -0
  80. package/dist/frameworks/react/examples/resume/assets/src/lib/utils.ts +6 -0
  81. package/dist/frameworks/react/examples/resume/assets/src/routes/api.resume-chat.ts +110 -0
  82. package/dist/frameworks/react/hosts/cloudflare/info.json +0 -1
  83. package/dist/frameworks/react/hosts/netlify/info.json +0 -1
  84. package/dist/frameworks/react/hosts/nitro/info.json +0 -1
  85. package/dist/frameworks/react/hosts/railway/info.json +0 -1
  86. package/dist/frameworks/react/index.js +1 -6
  87. package/dist/frameworks/react/project/base/README.md.ejs +86 -436
  88. package/dist/frameworks/react/project/base/_dot_gitignore +4 -0
  89. package/dist/frameworks/react/project/base/package.json +8 -5
  90. package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
  91. package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
  92. package/dist/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
  93. package/dist/frameworks/react/project/base/src/styles.css.ejs +3 -3
  94. package/dist/frameworks/react/project/base/tsconfig.json.ejs +1 -1
  95. package/dist/frameworks/react/project/base/vite.config.ts.ejs +33 -27
  96. package/dist/frameworks/react/project/packages.json +2 -2
  97. package/dist/frameworks/solid/add-ons/better-auth/assets/src/lib/auth-client.ts +3 -0
  98. package/dist/frameworks/solid/add-ons/better-auth/assets/src/lib/auth.ts +9 -0
  99. package/dist/frameworks/solid/add-ons/better-auth/assets/src/routes/api/auth/$.ts +11 -0
  100. package/dist/frameworks/solid/add-ons/better-auth/info.json +1 -1
  101. package/dist/frameworks/solid/add-ons/convex/assets/convex/schema.ts +14 -0
  102. package/dist/frameworks/solid/add-ons/convex/assets/convex/todos.ts +43 -0
  103. package/dist/frameworks/solid/add-ons/solid-ui/assets/src/lib/utils.ts +6 -0
  104. package/dist/frameworks/solid/add-ons/store/assets/src/lib/demo-store.ts +13 -0
  105. package/dist/frameworks/solid/add-ons/strapi/assets/src/lib/strapiClient.ts +7 -0
  106. package/dist/frameworks/solid/add-ons/t3env/assets/src/env.ts +39 -0
  107. package/dist/frameworks/solid/examples/tanchat/assets/ai-streaming-server/src/index.ts +102 -0
  108. package/dist/frameworks/solid/examples/tanchat/assets/src/lib/demo-store.ts +13 -0
  109. package/dist/frameworks/solid/examples/tanchat/assets/src/store/demo.hooks.ts +17 -0
  110. package/dist/frameworks/solid/examples/tanchat/assets/src/store/demo.store.ts +133 -0
  111. package/dist/frameworks/solid/hosts/cloudflare/info.json +0 -1
  112. package/dist/frameworks/solid/hosts/netlify/info.json +0 -1
  113. package/dist/frameworks/solid/hosts/nitro/info.json +0 -1
  114. package/dist/frameworks/solid/hosts/railway/info.json +0 -1
  115. package/dist/frameworks/solid/index.js +1 -6
  116. package/dist/frameworks/solid/project/base/README.md.ejs +43 -117
  117. package/dist/frameworks/solid/project/base/_dot_gitignore +4 -0
  118. package/dist/frameworks/solid/project/base/package.json +8 -3
  119. package/dist/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
  120. package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
  121. package/dist/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
  122. package/dist/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
  123. package/dist/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
  124. package/dist/frameworks/solid/project/packages.json +2 -2
  125. package/dist/frameworks.js +0 -1
  126. package/dist/package-json.js +6 -10
  127. package/dist/template-file.js +21 -7
  128. package/dist/types/custom-add-ons/add-on.d.ts +1 -1
  129. package/dist/types/file-helpers.d.ts +0 -1
  130. package/dist/types/types.d.ts +12 -12
  131. package/dist/types.js +1 -2
  132. package/package.json +2 -2
  133. package/src/add-ons.ts +54 -2
  134. package/src/add-to-app.ts +42 -7
  135. package/src/custom-add-ons/add-on.ts +2 -33
  136. package/src/custom-add-ons/starter.ts +1 -2
  137. package/src/file-helpers.ts +11 -10
  138. package/src/frameworks/react/add-ons/ai/info.json +1 -1
  139. package/src/frameworks/react/add-ons/apollo-client/info.json +1 -1
  140. package/src/frameworks/react/add-ons/better-auth/info.json +0 -2
  141. package/src/frameworks/react/add-ons/clerk/info.json +0 -1
  142. package/src/frameworks/react/add-ons/db/info.json +1 -1
  143. package/src/frameworks/react/add-ons/drizzle/info.json +1 -1
  144. package/src/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
  145. package/src/frameworks/react/add-ons/mcp/info.json +1 -2
  146. package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
  147. package/src/frameworks/react/add-ons/neon/info.json +1 -2
  148. package/src/frameworks/react/add-ons/oRPC/info.json +1 -1
  149. package/src/frameworks/react/add-ons/paraglide/info.json +1 -1
  150. package/src/frameworks/react/add-ons/prisma/info.json +1 -1
  151. package/src/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
  152. package/src/frameworks/react/add-ons/sentry/info.json +1 -2
  153. package/src/frameworks/react/add-ons/tRPC/info.json +1 -1
  154. package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
  155. package/src/frameworks/react/add-ons/workos/info.json +0 -1
  156. package/src/frameworks/react/hosts/cloudflare/info.json +0 -1
  157. package/src/frameworks/react/hosts/netlify/info.json +0 -1
  158. package/src/frameworks/react/hosts/nitro/info.json +0 -1
  159. package/src/frameworks/react/hosts/railway/info.json +0 -1
  160. package/src/frameworks/react/index.ts +1 -6
  161. package/src/frameworks/react/project/base/README.md.ejs +86 -436
  162. package/src/frameworks/react/project/base/_dot_gitignore +4 -0
  163. package/src/frameworks/react/project/base/package.json +8 -5
  164. package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
  165. package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
  166. package/src/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
  167. package/src/frameworks/react/project/base/src/styles.css.ejs +3 -3
  168. package/src/frameworks/react/project/base/tsconfig.json.ejs +1 -1
  169. package/src/frameworks/react/project/base/vite.config.ts.ejs +33 -27
  170. package/src/frameworks/react/project/packages.json +2 -2
  171. package/src/frameworks/solid/add-ons/better-auth/info.json +1 -1
  172. package/src/frameworks/solid/hosts/cloudflare/info.json +0 -1
  173. package/src/frameworks/solid/hosts/netlify/info.json +0 -1
  174. package/src/frameworks/solid/hosts/nitro/info.json +0 -1
  175. package/src/frameworks/solid/hosts/railway/info.json +0 -1
  176. package/src/frameworks/solid/index.ts +1 -6
  177. package/src/frameworks/solid/project/base/README.md.ejs +43 -117
  178. package/src/frameworks/solid/project/base/_dot_gitignore +4 -0
  179. package/src/frameworks/solid/project/base/package.json +8 -3
  180. package/src/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
  181. package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
  182. package/src/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
  183. package/src/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
  184. package/src/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
  185. package/src/frameworks/solid/project/packages.json +2 -2
  186. package/src/frameworks.ts +0 -1
  187. package/src/package-json.ts +6 -10
  188. package/src/template-file.ts +27 -8
  189. package/src/types.ts +1 -2
  190. package/tests/add-to-app.test.ts +37 -0
  191. package/tests/copy-assets.test.ts +53 -0
  192. package/tests/file-helper.test.ts +23 -2
  193. package/tests/package-json.test.ts +32 -0
  194. package/tests/template-file.test.ts +28 -0
  195. package/dist/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
  196. package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  197. package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
  198. package/dist/frameworks/react/add-ons/module-federation/info.json +0 -11
  199. package/dist/frameworks/react/add-ons/module-federation/package.json +0 -5
  200. package/dist/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
  201. package/dist/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
  202. package/dist/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
  203. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
  204. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
  205. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
  206. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
  207. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
  208. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
  209. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
  210. package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
  211. package/dist/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
  212. package/dist/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
  213. package/dist/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
  214. package/dist/frameworks/react/add-ons/start/info.json +0 -61
  215. package/dist/frameworks/react/add-ons/start/package.json +0 -12
  216. package/dist/frameworks/react/add-ons/start/small-logo.svg +0 -1
  217. package/dist/frameworks/react/project/base/index.html.ejs +0 -20
  218. package/dist/frameworks/react/project/base/src/App.css.ejs +0 -38
  219. package/dist/frameworks/react/project/base/src/App.tsx.ejs +0 -63
  220. package/dist/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
  221. package/dist/frameworks/react/project/base/src/logo.svg +0 -12
  222. package/dist/frameworks/react/project/base/src/main.tsx.ejs +0 -166
  223. package/dist/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
  224. package/dist/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
  225. package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  226. package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
  227. package/dist/frameworks/solid/add-ons/module-federation/info.json +0 -10
  228. package/dist/frameworks/solid/add-ons/module-federation/package.json +0 -5
  229. package/dist/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
  230. package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
  231. package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
  232. package/dist/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
  233. package/dist/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
  234. package/dist/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
  235. package/dist/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
  236. package/dist/frameworks/solid/add-ons/start/info.json +0 -18
  237. package/dist/frameworks/solid/add-ons/start/package.json +0 -15
  238. package/dist/frameworks/solid/add-ons/start/small-logo.svg +0 -1
  239. package/dist/frameworks/solid/project/base/index.html.ejs +0 -20
  240. package/dist/frameworks/solid/project/base/src/App.css.ejs +0 -38
  241. package/dist/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
  242. package/dist/frameworks/solid/project/base/src/logo.svg +0 -120
  243. package/dist/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
  244. package/src/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
  245. package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  246. package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
  247. package/src/frameworks/react/add-ons/module-federation/info.json +0 -11
  248. package/src/frameworks/react/add-ons/module-federation/package.json +0 -5
  249. package/src/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
  250. package/src/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
  251. package/src/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
  252. package/src/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
  253. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
  254. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
  255. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
  256. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
  257. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
  258. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
  259. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
  260. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
  261. package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
  262. package/src/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
  263. package/src/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
  264. package/src/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
  265. package/src/frameworks/react/add-ons/start/info.json +0 -61
  266. package/src/frameworks/react/add-ons/start/package.json +0 -12
  267. package/src/frameworks/react/add-ons/start/small-logo.svg +0 -1
  268. package/src/frameworks/react/project/base/index.html.ejs +0 -20
  269. package/src/frameworks/react/project/base/src/App.css.ejs +0 -38
  270. package/src/frameworks/react/project/base/src/App.tsx.ejs +0 -63
  271. package/src/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
  272. package/src/frameworks/react/project/base/src/logo.svg +0 -12
  273. package/src/frameworks/react/project/base/src/main.tsx.ejs +0 -166
  274. package/src/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
  275. package/src/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
  276. package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
  277. package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
  278. package/src/frameworks/solid/add-ons/module-federation/info.json +0 -10
  279. package/src/frameworks/solid/add-ons/module-federation/package.json +0 -5
  280. package/src/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
  281. package/src/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
  282. package/src/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
  283. package/src/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
  284. package/src/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
  285. package/src/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
  286. package/src/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
  287. package/src/frameworks/solid/add-ons/start/info.json +0 -18
  288. package/src/frameworks/solid/add-ons/start/package.json +0 -15
  289. package/src/frameworks/solid/add-ons/start/small-logo.svg +0 -1
  290. package/src/frameworks/solid/project/base/index.html.ejs +0 -20
  291. package/src/frameworks/solid/project/base/src/App.css.ejs +0 -38
  292. package/src/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
  293. package/src/frameworks/solid/project/base/src/logo.svg +0 -120
  294. package/src/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
@@ -0,0 +1,53 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
3
+
4
+ import { RadioGroup } from "./radio-group";
5
+
6
+ const meta = {
7
+ title: "Form/RadioGroup",
8
+ component: RadioGroup,
9
+ parameters: {
10
+ layout: "centered",
11
+ },
12
+ tags: ["autodocs"],
13
+ args: { onChange: fn() },
14
+ } satisfies Meta<typeof RadioGroup>;
15
+
16
+ export default meta;
17
+ type Story = StoryObj<typeof meta>;
18
+
19
+ export const Default: Story = {
20
+ args: {
21
+ label: "Employment Type",
22
+ name: "employmentType",
23
+ options: [
24
+ { value: "full-time", label: "Full Time" },
25
+ { value: "part-time", label: "Part Time" },
26
+ ],
27
+ },
28
+ };
29
+
30
+ export const Selected: Story = {
31
+ args: {
32
+ label: "Employment Type",
33
+ name: "employmentType",
34
+ options: [
35
+ { value: "full-time", label: "Full Time" },
36
+ { value: "part-time", label: "Part Time" },
37
+ ],
38
+ value: "full-time",
39
+ },
40
+ };
41
+
42
+ export const MultipleOptions: Story = {
43
+ args: {
44
+ label: "Subscription Plan",
45
+ name: "plan",
46
+ options: [
47
+ { value: "basic", label: "Basic" },
48
+ { value: "pro", label: "Pro" },
49
+ { value: "enterprise", label: "Enterprise" },
50
+ ],
51
+ value: "pro",
52
+ },
53
+ };
@@ -0,0 +1,55 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { fn } from "storybook/test";
3
+
4
+ import { Slider } from "./slider";
5
+
6
+ const meta = {
7
+ title: "Form/Slider",
8
+ component: Slider,
9
+ parameters: {
10
+ layout: "centered",
11
+ },
12
+ tags: ["autodocs"],
13
+ args: { onChange: fn() },
14
+ } satisfies Meta<typeof Slider>;
15
+
16
+ export default meta;
17
+ type Story = StoryObj<typeof meta>;
18
+
19
+ export const Default: Story = {
20
+ args: {
21
+ label: "Volume",
22
+ id: "volume",
23
+ value: 50,
24
+ },
25
+ };
26
+
27
+ export const Skill: Story = {
28
+ args: {
29
+ label: "Plays Guitar",
30
+ id: "guitar",
31
+ value: 75,
32
+ min: 0,
33
+ max: 100,
34
+ },
35
+ };
36
+
37
+ export const NoValue: Story = {
38
+ args: {
39
+ label: "Experience Level",
40
+ id: "experience",
41
+ value: 30,
42
+ showValue: false,
43
+ },
44
+ };
45
+
46
+ export const CustomRange: Story = {
47
+ args: {
48
+ label: "Custom Range",
49
+ id: "custom-range",
50
+ value: 5,
51
+ min: 1,
52
+ max: 20,
53
+ step: 1,
54
+ },
55
+ };
@@ -0,0 +1,7 @@
1
+ import { strapi } from "@strapi/client";
2
+
3
+ export const strapiClient = strapi({
4
+ baseURL: import.meta.env.VITE_STRAPI_URL,
5
+ });
6
+
7
+ export const articles = strapiClient.collection("articles");
@@ -0,0 +1,39 @@
1
+ import { createEnv } from "@t3-oss/env-core";
2
+ import { z } from "zod";
3
+
4
+ export const env = createEnv({
5
+ server: {
6
+ SERVER_URL: z.string().url().optional(),
7
+ },
8
+
9
+ /**
10
+ * The prefix that client-side variables must have. This is enforced both at
11
+ * a type-level and at runtime.
12
+ */
13
+ clientPrefix: "VITE_",
14
+
15
+ client: {
16
+ VITE_APP_TITLE: z.string().min(1).optional(),
17
+ },
18
+
19
+ /**
20
+ * What object holds the environment variables at runtime. This is usually
21
+ * `process.env` or `import.meta.env`.
22
+ */
23
+ runtimeEnv: import.meta.env,
24
+
25
+ /**
26
+ * By default, this library will feed the environment variables directly to
27
+ * the Zod validator.
28
+ *
29
+ * This means that if you have an empty string for a value that is supposed
30
+ * to be a number (e.g. `PORT=` in a ".env" file), Zod will incorrectly flag
31
+ * it as a type mismatch violation. Additionally, if you have an empty string
32
+ * for a value that is supposed to be a string with a default value (e.g.
33
+ * `DOMAIN=` in an ".env" file), the default value will never be applied.
34
+ *
35
+ * In order to solve these issues, we recommend that all new projects
36
+ * explicitly specify this option as true.
37
+ */
38
+ emptyStringAsUndefined: true,
39
+ });
@@ -0,0 +1,9 @@
1
+ import { initTRPC } from "@trpc/server";
2
+ import superjson from "superjson";
3
+
4
+ const t = initTRPC.create({
5
+ transformer: superjson,
6
+ });
7
+
8
+ export const createTRPCRouter = t.router;
9
+ export const publicProcedure = t.procedure;
@@ -0,0 +1,4 @@
1
+ import { createTRPCContext } from "@trpc/tanstack-react-query";
2
+ import type { TRPCRouter } from "@/integrations/trpc/router";
3
+
4
+ export const { TRPCProvider, useTRPC } = createTRPCContext<TRPCRouter>();
@@ -0,0 +1,27 @@
1
+ import { z } from 'zod'
2
+
3
+ import { createTRPCRouter, publicProcedure } from './init'
4
+
5
+ import type { TRPCRouterRecord } from '@trpc/server'
6
+
7
+ const todos = [
8
+ { id: 1, name: 'Get groceries' },
9
+ { id: 2, name: 'Buy a new phone' },
10
+ { id: 3, name: 'Finish the project' },
11
+ ]
12
+
13
+ const todosRouter = {
14
+ list: publicProcedure.query(() => todos),
15
+ add: publicProcedure
16
+ .input(z.object({ name: z.string() }))
17
+ .mutation(({ input }) => {
18
+ const newTodo = { id: todos.length + 1, name: input.name }
19
+ todos.push(newTodo)
20
+ return newTodo
21
+ }),
22
+ } satisfies TRPCRouterRecord
23
+
24
+ export const trpcRouter = createTRPCRouter({
25
+ todos: todosRouter,
26
+ })
27
+ export type TRPCRouter = typeof trpcRouter
@@ -4,7 +4,7 @@
4
4
  "phase": "add-on",
5
5
  "modes": ["file-router"],
6
6
  "link": "https://trpc.io/",
7
- "dependsOn": ["tanstack-query", "start"],
7
+ "dependsOn": ["tanstack-query"],
8
8
  "type": "add-on",
9
9
  "category": "api",
10
10
  "color": "#2596BE",
@@ -0,0 +1,50 @@
1
+ import { faker } from '@faker-js/faker'
2
+
3
+ export type Person = {
4
+ id: number
5
+ firstName: string
6
+ lastName: string
7
+ age: number
8
+ visits: number
9
+ progress: number
10
+ status: 'relationship' | 'complicated' | 'single'
11
+ subRows?: Person[]
12
+ }
13
+
14
+ const range = (len: number) => {
15
+ const arr: number[] = []
16
+ for (let i = 0; i < len; i++) {
17
+ arr.push(i)
18
+ }
19
+ return arr
20
+ }
21
+
22
+ const newPerson = (num: number): Person => {
23
+ return {
24
+ id: num,
25
+ firstName: faker.person.firstName(),
26
+ lastName: faker.person.lastName(),
27
+ age: faker.number.int(40),
28
+ visits: faker.number.int(1000),
29
+ progress: faker.number.int(100),
30
+ status: faker.helpers.shuffle<Person['status']>([
31
+ 'relationship',
32
+ 'complicated',
33
+ 'single',
34
+ ])[0]!,
35
+ }
36
+ }
37
+
38
+ export function makeData(...lens: number[]) {
39
+ const makeDataLevel = (depth = 0): Person[] => {
40
+ const len = lens[depth]!
41
+ return range(len).map((index): Person => {
42
+ return {
43
+ ...newPerson(index),
44
+ subRows: lens[depth + 1] ? makeDataLevel(depth + 1) : undefined,
45
+ }
46
+ })
47
+ }
48
+
49
+ return makeDataLevel()
50
+ }
@@ -6,8 +6,6 @@ import { createTRPCOptionsProxy } from "@trpc/tanstack-react-query";
6
6
 
7
7
  import type { TRPCRouter } from "@/integrations/trpc/router";
8
8
 
9
- import { TRPCProvider } from "@/integrations/trpc/react";
10
-
11
9
  function getUrl() {
12
10
  const base = (() => {
13
11
  if (typeof window !== "undefined") return "";
@@ -42,22 +40,8 @@ export function getContext() {
42
40
  trpc: serverHelpers,
43
41
  };
44
42
  }
45
-
46
- export function Provider({
47
- children,
48
- queryClient,
49
- }: {
50
- children: React.ReactNode;
51
- queryClient: QueryClient;
52
- }) {
53
- return (
54
- <TRPCProvider trpcClient={trpcClient} queryClient={queryClient}>
55
- {children}
56
- </TRPCProvider>
57
- );
58
- }
59
43
  <% } else { %>
60
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
44
+ import { QueryClient } from '@tanstack/react-query'
61
45
 
62
46
  export function getContext() {
63
47
  const queryClient = new QueryClient();
@@ -65,16 +49,4 @@ export function getContext() {
65
49
  queryClient,
66
50
  };
67
51
  }
68
-
69
- export function Provider({
70
- children,
71
- queryClient,
72
- }: {
73
- children: React.ReactNode;
74
- queryClient: QueryClient;
75
- }) {
76
- return (
77
- <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
78
- );
79
- }
80
52
  <% } %>
@@ -9,7 +9,6 @@
9
9
  "color": "#6363F1",
10
10
  "priority": 160,
11
11
  "link": "https://workos.com",
12
- "tailwind": true,
13
12
  "routes": [
14
13
  {
15
14
  "icon": "CircleUserRound",
@@ -0,0 +1,56 @@
1
+ import { defineCollection, defineConfig } from '@content-collections/core'
2
+ import { z } from 'zod'
3
+
4
+ const speakers = defineCollection({
5
+ name: 'speakers',
6
+ directory: 'content/speakers',
7
+ include: '**/*.md',
8
+ schema: z.object({
9
+ name: z.string(),
10
+ title: z.string(),
11
+ specialty: z.string(),
12
+ restaurant: z.string(),
13
+ location: z.string(),
14
+ headshot: z.string(),
15
+ awards: z.array(z.string()).optional(),
16
+ content: z.string(),
17
+ }),
18
+ transform: async (doc) => {
19
+ return {
20
+ ...doc,
21
+ slug: doc.name
22
+ .toLowerCase()
23
+ .replace(/[^\w-]+/g, '-')
24
+ .replace(/-+/g, '-')
25
+ .replace(/^-|-$/g, ''),
26
+ }
27
+ },
28
+ })
29
+
30
+ const talks = defineCollection({
31
+ name: 'talks',
32
+ directory: 'content/talks',
33
+ include: '**/*.md',
34
+ schema: z.object({
35
+ title: z.string(),
36
+ speaker: z.string(),
37
+ duration: z.string(),
38
+ image: z.string(),
39
+ topics: z.array(z.string()),
40
+ content: z.string(),
41
+ }),
42
+ transform: async (doc) => {
43
+ return {
44
+ ...doc,
45
+ slug: doc.title
46
+ .toLowerCase()
47
+ .replace(/[^\w-]+/g, '-')
48
+ .replace(/-+/g, '-')
49
+ .replace(/^-|-$/g, ''),
50
+ }
51
+ },
52
+ })
53
+
54
+ export default defineConfig({
55
+ collections: [speakers, talks],
56
+ })
@@ -0,0 +1,26 @@
1
+ import {
2
+ fetchServerSentEvents,
3
+ useChat,
4
+ createChatClientOptions,
5
+ } from '@tanstack/ai-react'
6
+ import type { InferChatMessages } from '@tanstack/ai-react'
7
+
8
+ // Default chat options for type inference
9
+ const defaultChatOptions = createChatClientOptions({
10
+ connection: fetchServerSentEvents('/api/remy-chat'),
11
+ })
12
+
13
+ export type ConferenceChatMessages = InferChatMessages<typeof defaultChatOptions>
14
+
15
+ export const useConferenceChat = (speakerSlug?: string, talkSlug?: string) => {
16
+ const chatOptions = createChatClientOptions({
17
+ connection: fetchServerSentEvents('/api/remy-chat', {
18
+ body: {
19
+ speakerSlug,
20
+ talkSlug,
21
+ },
22
+ }),
23
+ })
24
+
25
+ return useChat(chatOptions)
26
+ }
@@ -0,0 +1,210 @@
1
+ import { toolDefinition } from '@tanstack/ai'
2
+ import { z } from 'zod'
3
+
4
+ import { allSpeakers, allTalks } from 'content-collections'
5
+
6
+ // Tool definition for getting a speaker by slug
7
+ export const getSpeakerBySlugToolDef = toolDefinition({
8
+ name: 'getSpeakerBySlug',
9
+ description:
10
+ 'Get the full profile and bio of a specific speaker. Use this when asked about a particular speaker.',
11
+ inputSchema: z.object({
12
+ slug: z.string().describe('The slug of the speaker'),
13
+ }),
14
+ outputSchema: z.object({
15
+ name: z.string(),
16
+ title: z.string(),
17
+ specialty: z.string(),
18
+ restaurant: z.string(),
19
+ location: z.string(),
20
+ bio: z.string(),
21
+ awards: z.array(z.string()),
22
+ }),
23
+ })
24
+
25
+ // Server implementation
26
+ export const getSpeakerBySlug = getSpeakerBySlugToolDef.server(({ slug }) => {
27
+ const speaker = allSpeakers.find((s) => s.slug === slug)
28
+ if (!speaker) {
29
+ return {
30
+ name: 'Speaker not found',
31
+ title: '',
32
+ specialty: '',
33
+ restaurant: '',
34
+ location: '',
35
+ bio: 'The requested speaker was not found.',
36
+ awards: [],
37
+ }
38
+ }
39
+ return {
40
+ name: speaker.name,
41
+ title: speaker.title,
42
+ specialty: speaker.specialty,
43
+ restaurant: speaker.restaurant,
44
+ location: speaker.location,
45
+ bio: speaker.content,
46
+ awards: speaker.awards || [],
47
+ }
48
+ })
49
+
50
+ // Tool definition for getting a talk by slug
51
+ export const getTalkBySlugToolDef = toolDefinition({
52
+ name: 'getTalkBySlug',
53
+ description:
54
+ 'Get the full details of a specific session/talk. Use this when asked about a particular session.',
55
+ inputSchema: z.object({
56
+ slug: z.string().describe('The slug of the talk'),
57
+ }),
58
+ outputSchema: z.object({
59
+ title: z.string(),
60
+ speaker: z.string(),
61
+ duration: z.string(),
62
+ topics: z.array(z.string()),
63
+ description: z.string(),
64
+ }),
65
+ })
66
+
67
+ // Server implementation
68
+ export const getTalkBySlug = getTalkBySlugToolDef.server(({ slug }) => {
69
+ const talk = allTalks.find((t) => t.slug === slug)
70
+ if (!talk) {
71
+ return {
72
+ title: 'Session not found',
73
+ speaker: '',
74
+ duration: '',
75
+ topics: [],
76
+ description: 'The requested session was not found.',
77
+ }
78
+ }
79
+ return {
80
+ title: talk.title,
81
+ speaker: talk.speaker,
82
+ duration: talk.duration,
83
+ topics: talk.topics,
84
+ description: talk.content,
85
+ }
86
+ })
87
+
88
+ // Tool definition for listing all speakers
89
+ export const getAllSpeakersToolDef = toolDefinition({
90
+ name: 'getAllSpeakers',
91
+ description:
92
+ 'Get a list of all speakers at the conference with their names, specialties, and restaurants.',
93
+ inputSchema: z.object({}),
94
+ outputSchema: z.array(
95
+ z.object({
96
+ slug: z.string(),
97
+ name: z.string(),
98
+ specialty: z.string(),
99
+ restaurant: z.string(),
100
+ location: z.string(),
101
+ }),
102
+ ),
103
+ })
104
+
105
+ // Server implementation
106
+ export const getAllSpeakers = getAllSpeakersToolDef.server(() => {
107
+ return allSpeakers.map((speaker) => ({
108
+ slug: speaker.slug,
109
+ name: speaker.name,
110
+ specialty: speaker.specialty,
111
+ restaurant: speaker.restaurant,
112
+ location: speaker.location,
113
+ }))
114
+ })
115
+
116
+ // Tool definition for listing all talks
117
+ export const getAllTalksToolDef = toolDefinition({
118
+ name: 'getAllTalks',
119
+ description:
120
+ 'Get a list of all sessions/talks at the conference with their titles, speakers, and topics.',
121
+ inputSchema: z.object({}),
122
+ outputSchema: z.array(
123
+ z.object({
124
+ slug: z.string(),
125
+ title: z.string(),
126
+ speaker: z.string(),
127
+ duration: z.string(),
128
+ topics: z.array(z.string()),
129
+ }),
130
+ ),
131
+ })
132
+
133
+ // Server implementation
134
+ export const getAllTalks = getAllTalksToolDef.server(() => {
135
+ return allTalks.map((talk) => ({
136
+ slug: talk.slug,
137
+ title: talk.title,
138
+ speaker: talk.speaker,
139
+ duration: talk.duration,
140
+ topics: talk.topics,
141
+ }))
142
+ })
143
+
144
+ // Tool definition for searching conference content
145
+ export const searchConferenceToolDef = toolDefinition({
146
+ name: 'searchConference',
147
+ description:
148
+ 'Search for speakers or sessions by keyword. Use this to find content matching user queries about topics, techniques, or names.',
149
+ inputSchema: z.object({
150
+ query: z.string().describe('The search query'),
151
+ }),
152
+ outputSchema: z.object({
153
+ speakers: z.array(
154
+ z.object({
155
+ slug: z.string(),
156
+ name: z.string(),
157
+ specialty: z.string(),
158
+ restaurant: z.string(),
159
+ }),
160
+ ),
161
+ talks: z.array(
162
+ z.object({
163
+ slug: z.string(),
164
+ title: z.string(),
165
+ speaker: z.string(),
166
+ topics: z.array(z.string()),
167
+ }),
168
+ ),
169
+ }),
170
+ })
171
+
172
+ // Server implementation
173
+ export const searchConference = searchConferenceToolDef.server(({ query }) => {
174
+ const queryLower = query.toLowerCase()
175
+
176
+ const matchingSpeakers = allSpeakers
177
+ .filter(
178
+ (speaker) =>
179
+ speaker.name.toLowerCase().includes(queryLower) ||
180
+ speaker.specialty.toLowerCase().includes(queryLower) ||
181
+ speaker.restaurant.toLowerCase().includes(queryLower) ||
182
+ speaker.content.toLowerCase().includes(queryLower),
183
+ )
184
+ .map((speaker) => ({
185
+ slug: speaker.slug,
186
+ name: speaker.name,
187
+ specialty: speaker.specialty,
188
+ restaurant: speaker.restaurant,
189
+ }))
190
+
191
+ const matchingTalks = allTalks
192
+ .filter(
193
+ (talk) =>
194
+ talk.title.toLowerCase().includes(queryLower) ||
195
+ talk.speaker.toLowerCase().includes(queryLower) ||
196
+ talk.topics.some((topic) => topic.toLowerCase().includes(queryLower)) ||
197
+ talk.content.toLowerCase().includes(queryLower),
198
+ )
199
+ .map((talk) => ({
200
+ slug: talk.slug,
201
+ title: talk.title,
202
+ speaker: talk.speaker,
203
+ topics: talk.topics,
204
+ }))
205
+
206
+ return {
207
+ speakers: matchingSpeakers,
208
+ talks: matchingTalks,
209
+ }
210
+ })
@@ -0,0 +1,6 @@
1
+ import { clsx, type ClassValue } from 'clsx'
2
+ import { twMerge } from 'tailwind-merge'
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }