@tanstack/create 0.49.3 → 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.
- package/CHANGELOG.md +597 -0
- package/dist/add-ons.js +42 -2
- package/dist/add-to-app.js +36 -7
- package/dist/custom-add-ons/add-on.js +2 -26
- package/dist/custom-add-ons/starter.js +1 -2
- package/dist/file-helpers.js +11 -10
- package/dist/frameworks/react/add-ons/ai/info.json +1 -1
- package/dist/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/dist/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/dist/frameworks/react/add-ons/clerk/info.json +0 -1
- package/dist/frameworks/react/add-ons/db/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/dist/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/mcp/info.json +1 -2
- package/dist/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
- package/dist/frameworks/react/add-ons/neon/info.json +1 -2
- package/dist/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/info.json +1 -1
- package/dist/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/dist/frameworks/react/add-ons/sentry/info.json +1 -2
- package/dist/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/dist/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/dist/frameworks/react/add-ons/workos/info.json +0 -1
- package/dist/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/react/hosts/netlify/info.json +0 -1
- package/dist/frameworks/react/hosts/nitro/info.json +0 -1
- package/dist/frameworks/react/hosts/railway/info.json +0 -1
- package/dist/frameworks/react/index.js +1 -6
- package/dist/frameworks/react/project/base/README.md.ejs +86 -436
- package/dist/frameworks/react/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/react/project/base/package.json +8 -5
- package/dist/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/dist/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/dist/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/dist/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/dist/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/dist/frameworks/react/project/packages.json +2 -2
- package/dist/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/dist/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/dist/frameworks/solid/hosts/netlify/info.json +0 -1
- package/dist/frameworks/solid/hosts/nitro/info.json +0 -1
- package/dist/frameworks/solid/hosts/railway/info.json +0 -1
- package/dist/frameworks/solid/index.js +1 -6
- package/dist/frameworks/solid/project/base/README.md.ejs +43 -117
- package/dist/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/dist/frameworks/solid/project/base/package.json +8 -3
- package/dist/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/dist/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/dist/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/dist/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/dist/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/dist/frameworks/solid/project/packages.json +2 -2
- package/dist/frameworks.js +0 -1
- package/dist/package-json.js +6 -10
- package/dist/template-file.js +21 -7
- package/dist/types/custom-add-ons/add-on.d.ts +1 -1
- package/dist/types/file-helpers.d.ts +0 -1
- package/dist/types/types.d.ts +12 -12
- package/dist/types.js +1 -2
- package/package.json +1 -1
- package/src/add-ons.ts +54 -2
- package/src/add-to-app.ts +42 -7
- package/src/custom-add-ons/add-on.ts +2 -33
- package/src/custom-add-ons/starter.ts +1 -2
- package/src/file-helpers.ts +11 -10
- package/src/frameworks/react/add-ons/ai/info.json +1 -1
- package/src/frameworks/react/add-ons/apollo-client/info.json +1 -1
- package/src/frameworks/react/add-ons/better-auth/info.json +0 -2
- package/src/frameworks/react/add-ons/clerk/info.json +0 -1
- package/src/frameworks/react/add-ons/db/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/info.json +1 -1
- package/src/frameworks/react/add-ons/drizzle/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/mcp/info.json +1 -2
- package/src/frameworks/react/add-ons/neon/assets/neon-vite-plugin.ts +1 -1
- package/src/frameworks/react/add-ons/neon/info.json +1 -2
- package/src/frameworks/react/add-ons/oRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/paraglide/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/info.json +1 -1
- package/src/frameworks/react/add-ons/prisma/package.json.ejs +4 -0
- package/src/frameworks/react/add-ons/sentry/info.json +1 -2
- package/src/frameworks/react/add-ons/tRPC/info.json +1 -1
- package/src/frameworks/react/add-ons/tanstack-query/assets/src/integrations/tanstack-query/root-provider.tsx.ejs +1 -29
- package/src/frameworks/react/add-ons/workos/info.json +0 -1
- package/src/frameworks/react/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/react/hosts/netlify/info.json +0 -1
- package/src/frameworks/react/hosts/nitro/info.json +0 -1
- package/src/frameworks/react/hosts/railway/info.json +0 -1
- package/src/frameworks/react/index.ts +1 -6
- package/src/frameworks/react/project/base/README.md.ejs +86 -436
- package/src/frameworks/react/project/base/_dot_gitignore +4 -0
- package/src/frameworks/react/project/base/package.json +8 -5
- package/src/frameworks/react/project/base/src/components/Header.tsx.ejs +2 -32
- package/src/frameworks/react/project/base/src/routes/__root.tsx.ejs +4 -44
- package/src/frameworks/react/project/base/src/routes/index.tsx.ejs +99 -61
- package/src/frameworks/react/project/base/src/styles.css.ejs +3 -3
- package/src/frameworks/react/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/react/project/base/vite.config.ts.ejs +33 -27
- package/src/frameworks/react/project/packages.json +2 -2
- package/src/frameworks/solid/add-ons/better-auth/info.json +1 -1
- package/src/frameworks/solid/hosts/cloudflare/info.json +0 -1
- package/src/frameworks/solid/hosts/netlify/info.json +0 -1
- package/src/frameworks/solid/hosts/nitro/info.json +0 -1
- package/src/frameworks/solid/hosts/railway/info.json +0 -1
- package/src/frameworks/solid/index.ts +1 -6
- package/src/frameworks/solid/project/base/README.md.ejs +43 -117
- package/src/frameworks/solid/project/base/_dot_gitignore +4 -0
- package/src/frameworks/solid/project/base/package.json +8 -3
- package/src/frameworks/solid/project/base/src/components/Header.tsx.ejs +2 -25
- package/src/frameworks/solid/project/base/src/routes/__root.tsx.ejs +3 -30
- package/src/frameworks/solid/project/base/src/routes/index.tsx.ejs +97 -35
- package/src/frameworks/solid/project/base/tsconfig.json.ejs +1 -1
- package/src/frameworks/solid/project/base/vite.config.ts.ejs +15 -20
- package/src/frameworks/solid/project/packages.json +2 -2
- package/src/frameworks.ts +0 -1
- package/src/package-json.ts +6 -10
- package/src/template-file.ts +27 -8
- package/src/types.ts +1 -2
- package/tests/add-to-app.test.ts +37 -0
- package/tests/file-helper.test.ts +23 -2
- package/tests/package-json.test.ts +32 -0
- package/tests/template-file.test.ts +28 -0
- package/dist/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/dist/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/dist/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/dist/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
- package/dist/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/dist/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/dist/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/dist/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/dist/frameworks/react/add-ons/start/info.json +0 -61
- package/dist/frameworks/react/add-ons/start/package.json +0 -12
- package/dist/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/react/project/base/index.html.ejs +0 -20
- package/dist/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/dist/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/dist/frameworks/react/project/base/src/logo.svg +0 -12
- package/dist/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/dist/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/dist/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/dist/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/dist/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/dist/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/dist/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/dist/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/dist/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/dist/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/dist/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/dist/frameworks/solid/add-ons/start/info.json +0 -18
- package/dist/frameworks/solid/add-ons/start/package.json +0 -15
- package/dist/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/dist/frameworks/solid/project/base/index.html.ejs +0 -20
- package/dist/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/dist/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/dist/frameworks/solid/project/base/src/logo.svg +0 -120
- package/dist/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
- package/src/frameworks/react/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -31
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/react/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -11
- package/src/frameworks/react/add-ons/module-federation/info.json +0 -11
- package/src/frameworks/react/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/react/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/react/add-ons/start/assets/_dot_gitignore.append +0 -3
- package/src/frameworks/react/add-ons/start/assets/src/data/demo.punk-songs.ts +0 -13
- package/src/frameworks/react/add-ons/start/assets/src/router.tsx.ejs +0 -77
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.names.ts +0 -10
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/api.tq-todos.ts.ejs +0 -35
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.api-request.tsx.ejs +0 -68
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.css.ejs +0 -43
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.server-funcs.tsx.ejs +0 -183
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.data-only.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.full-ssr.tsx.ejs +0 -55
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.index.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/demo/start.ssr.spa-mode.tsx.ejs +0 -62
- package/src/frameworks/react/add-ons/start/assets/src/routes/index.tsx.ejs +0 -142
- package/src/frameworks/react/add-ons/start/assets/src/server.ts.ejs +0 -9
- package/src/frameworks/react/add-ons/start/assets/vite.config.ts.ejs +0 -40
- package/src/frameworks/react/add-ons/start/info.json +0 -61
- package/src/frameworks/react/add-ons/start/package.json +0 -12
- package/src/frameworks/react/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/react/project/base/index.html.ejs +0 -20
- package/src/frameworks/react/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/react/project/base/src/App.tsx.ejs +0 -63
- package/src/frameworks/react/project/base/src/components/Header.css.ejs +0 -18
- package/src/frameworks/react/project/base/src/logo.svg +0 -12
- package/src/frameworks/react/project/base/src/main.tsx.ejs +0 -166
- package/src/frameworks/react/project/base/src/reportWebVitals.ts.ejs +0 -28
- package/src/frameworks/solid/add-ons/module-federation/assets/module-federation.config.js.ejs +0 -27
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-component.tsx +0 -3
- package/src/frameworks/solid/add-ons/module-federation/assets/src/demo-mf-self-contained.tsx +0 -9
- package/src/frameworks/solid/add-ons/module-federation/info.json +0 -10
- package/src/frameworks/solid/add-ons/module-federation/package.json +0 -5
- package/src/frameworks/solid/add-ons/module-federation/small-logo.svg +0 -87
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-circle-logo.png +0 -0
- package/src/frameworks/solid/add-ons/start/assets/public/tanstack-word-logo-white.svg +0 -1
- package/src/frameworks/solid/add-ons/start/assets/src/router.tsx.ejs +0 -30
- package/src/frameworks/solid/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx +0 -49
- package/src/frameworks/solid/add-ons/start/assets/src/routes/index.tsx.ejs +0 -138
- package/src/frameworks/solid/add-ons/start/assets/vite.config.ts.ejs +0 -22
- package/src/frameworks/solid/add-ons/start/info.json +0 -18
- package/src/frameworks/solid/add-ons/start/package.json +0 -15
- package/src/frameworks/solid/add-ons/start/small-logo.svg +0 -1
- package/src/frameworks/solid/project/base/index.html.ejs +0 -20
- package/src/frameworks/solid/project/base/src/App.css.ejs +0 -38
- package/src/frameworks/solid/project/base/src/App.tsx.ejs +0 -34
- package/src/frameworks/solid/project/base/src/logo.svg +0 -120
- package/src/frameworks/solid/project/base/src/main.tsx.ejs +0 -126
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
<% if (addOns.length === 0 && integrations.length === 0 && routes.length === 0) { ignoreFile() } %>import { Link } from '@tanstack/react-router'
|
|
2
2
|
<% for(const integration of integrations.filter(i => i.type === 'header-user')) { %>
|
|
3
3
|
import <%= integration.jsName %> from "<%= relativePath(integration.path) %>";
|
|
4
|
-
<% } %><%
|
|
5
|
-
import './Header.css'<% } %><% if (tailwind) {
|
|
4
|
+
<% } %><%
|
|
6
5
|
const icons = new Set([
|
|
7
6
|
"Menu",
|
|
8
7
|
"X",
|
|
@@ -26,10 +25,9 @@ import { useState } from 'react';
|
|
|
26
25
|
import {
|
|
27
26
|
<%= Array.from(icons).sort().join(", ") %>
|
|
28
27
|
} from "lucide-react";
|
|
29
|
-
<% } %>
|
|
30
28
|
|
|
31
29
|
export default function Header() {
|
|
32
|
-
<%
|
|
30
|
+
<%
|
|
33
31
|
const menusWithChildren = addOns.filter(a => a.routes?.some(r => r.children));
|
|
34
32
|
const userHeaders = integrations.filter(i => i.type === 'header-user');
|
|
35
33
|
%>
|
|
@@ -155,32 +153,4 @@ const userHeaders = integrations.filter(i => i.type === 'header-user');
|
|
|
155
153
|
</aside>
|
|
156
154
|
</>
|
|
157
155
|
);
|
|
158
|
-
<% } else { %>
|
|
159
|
-
return (
|
|
160
|
-
<% if (tailwind) { %>
|
|
161
|
-
<header className="p-2 flex gap-2 bg-white text-black justify-between">
|
|
162
|
-
<nav className="flex flex-row">
|
|
163
|
-
<div className="px-2 font-bold">
|
|
164
|
-
<% } else { %>
|
|
165
|
-
<header className="header">
|
|
166
|
-
<nav className="nav">
|
|
167
|
-
<div className="nav-item">
|
|
168
|
-
<% } %>
|
|
169
|
-
<Link to="/">Home</Link>
|
|
170
|
-
</div>
|
|
171
|
-
<% for(const addOn of addOns) {
|
|
172
|
-
for(const route of (addOn?.routes||[])?.filter(r => r.url && r.name)) { %>
|
|
173
|
-
<div className="px-2 font-bold"><Link to="<%= route.url %>"><%= route.name %></Link></div>
|
|
174
|
-
<% } } %>
|
|
175
|
-
</nav>
|
|
176
|
-
<% if (integrations.filter(i => i.type === 'header-user').length > 0) { %>
|
|
177
|
-
<div>
|
|
178
|
-
<% for(const integration of integrations.filter(i => i.type === 'header-user')) { %>
|
|
179
|
-
<<%= integration.jsName %> />
|
|
180
|
-
<% } %>
|
|
181
|
-
</div>
|
|
182
|
-
<% } %>
|
|
183
|
-
</header>
|
|
184
|
-
)
|
|
185
|
-
<% } %>
|
|
186
156
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% let hasContext = addOnEnabled["apollo-client"] || addOnEnabled["tanstack-query"]; %>
|
|
2
|
-
|
|
3
|
-
HeadContent
|
|
2
|
+
import {
|
|
3
|
+
HeadContent, Scripts, <% if (hasContext) { %>createRootRouteWithContext<% } else { %>createRootRoute<% } %> } from '@tanstack/react-router'
|
|
4
4
|
import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools';
|
|
5
5
|
import { TanStackDevtools } from '@tanstack/react-devtools'
|
|
6
6
|
<% if (addOns.length) { %>
|
|
@@ -8,11 +8,9 @@ import Header from '../components/Header'
|
|
|
8
8
|
<% } %><% for(const integration of integrations.filter(i => i.type === 'layout' || i.type === 'provider' || i.type === 'devtools')) { %>
|
|
9
9
|
import <%= integration.jsName %> from '<%= relativePath(integration.path, true) %>'
|
|
10
10
|
<% } %><% if (addOnEnabled.paraglide) { %>
|
|
11
|
-
import { getLocale
|
|
11
|
+
import { getLocale } from '@/paraglide/runtime'
|
|
12
12
|
<% } %>
|
|
13
|
-
<% if (addOnEnabled.start) { %>
|
|
14
13
|
import appCss from '../styles.css?url'
|
|
15
|
-
<% } %>
|
|
16
14
|
<% if (addOnEnabled["apollo-client"]) { %>
|
|
17
15
|
import type { ApolloClientIntegration } from "@apollo/client-integration-tanstack-start";
|
|
18
16
|
<% } %>
|
|
@@ -41,20 +39,9 @@ export const Route = <% if (hasContext) { %>createRootRouteWithContext<MyRouterC
|
|
|
41
39
|
if (typeof document !== 'undefined') {
|
|
42
40
|
document.documentElement.setAttribute('lang', getLocale())
|
|
43
41
|
}
|
|
44
|
-
|
|
45
|
-
<% if (!addOnEnabled.start) { %>// Client-side fallback redirect for SPA/file-router builds. Start apps should
|
|
46
|
-
// prefer server-side paraglideMiddleware (see start template server.ts).
|
|
47
|
-
if (typeof window !== 'undefined') {
|
|
48
|
-
const decision = await shouldRedirect({ url: window.location.href })
|
|
49
|
-
|
|
50
|
-
if (decision.redirectUrl) {
|
|
51
|
-
throw redirect({ href: decision.redirectUrl.href })
|
|
52
|
-
}
|
|
53
|
-
}<% } %>
|
|
54
42
|
},
|
|
55
43
|
<% } %>
|
|
56
|
-
|
|
57
|
-
head: () => ({
|
|
44
|
+
head: () => ({
|
|
58
45
|
meta: [
|
|
59
46
|
{
|
|
60
47
|
charSet: 'utf-8',
|
|
@@ -74,35 +61,9 @@ export const Route = <% if (hasContext) { %>createRootRouteWithContext<MyRouterC
|
|
|
74
61
|
},
|
|
75
62
|
],
|
|
76
63
|
}),
|
|
77
|
-
<% } %>
|
|
78
|
-
<% if (addOnEnabled.start) { %>
|
|
79
64
|
shellComponent: RootDocument
|
|
80
|
-
<% } else { %>
|
|
81
|
-
component: () => (
|
|
82
|
-
<>
|
|
83
|
-
<% for(const integration of integrations.filter(i => i.type === 'provider')) { %><<%= integration.jsName %>>
|
|
84
|
-
<% } %><% if (addOns.length) { %><Header />
|
|
85
|
-
<% } %><Outlet />
|
|
86
|
-
<TanStackDevtools
|
|
87
|
-
config={{
|
|
88
|
-
position: 'bottom-right',
|
|
89
|
-
}}
|
|
90
|
-
plugins={[
|
|
91
|
-
{
|
|
92
|
-
name: 'Tanstack Router',
|
|
93
|
-
render: <TanStackRouterDevtoolsPanel />,
|
|
94
|
-
},
|
|
95
|
-
<% for(const integration of integrations.filter(i => i.type === 'devtools')) { %><%= integration.jsName %>,<% } %>
|
|
96
|
-
]}
|
|
97
|
-
/>
|
|
98
|
-
<% for(const integration of integrations.filter(i => i.type === 'layout')) { %><<%= integration.jsName %> />
|
|
99
|
-
<% } %><% for(const integration of integrations.filter(i => i.type === 'provider').reverse()) { %></<%= integration.jsName %>>
|
|
100
|
-
<% } %>
|
|
101
|
-
</>)
|
|
102
|
-
<% } %>
|
|
103
65
|
})
|
|
104
66
|
|
|
105
|
-
<% if (addOnEnabled.start) { %>
|
|
106
67
|
function RootDocument({ children }: { children: React.ReactNode }) {
|
|
107
68
|
return (
|
|
108
69
|
<% if (addOnEnabled.paraglide) { %><html lang={getLocale()}><% } else { %><html lang="en"><% } %>
|
|
@@ -132,4 +93,3 @@ function RootDocument({ children }: { children: React.ReactNode }) {
|
|
|
132
93
|
</html>
|
|
133
94
|
)
|
|
134
95
|
}
|
|
135
|
-
<% } %>
|
|
@@ -1,67 +1,105 @@
|
|
|
1
|
-
<% if (codeRouter || addOnEnabled.start) { ignoreFile() } %>
|
|
2
1
|
import { createFileRoute } from "@tanstack/react-router";
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import {
|
|
3
|
+
Zap, Server, Route as RouteIcon, Shield, Waves, Sparkles,
|
|
4
|
+
} from "lucide-react";
|
|
6
5
|
|
|
7
|
-
export const Route = createFileRoute("/")({
|
|
8
|
-
component: App,
|
|
9
|
-
});
|
|
6
|
+
export const Route = createFileRoute("/")({ component: App });
|
|
10
7
|
|
|
11
8
|
function App() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
9
|
+
const features = [
|
|
10
|
+
{
|
|
11
|
+
icon: <Zap className="w-12 h-12 text-cyan-400" />,
|
|
12
|
+
title: "Powerful Server Functions",
|
|
13
|
+
description: "Write server-side code that seamlessly integrates with your client components. Type-safe, secure, and simple.",
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
icon: <Server className="w-12 h-12 text-cyan-400" />,
|
|
17
|
+
title: "Flexible Server Side Rendering",
|
|
18
|
+
description: "Full-document SSR, streaming, and progressive enhancement out of the box. Control exactly what renders where.",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
icon: <RouteIcon className="w-12 h-12 text-cyan-400" />,
|
|
22
|
+
title: "API Routes",
|
|
23
|
+
description: "Build type-safe API endpoints alongside your application. No separate backend needed.",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
icon: <Shield className="w-12 h-12 text-cyan-400" />,
|
|
27
|
+
title: "Strongly Typed Everything",
|
|
28
|
+
description: "End-to-end type safety from server to client. Catch errors before they reach production.",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
icon: <Waves className="w-12 h-12 text-cyan-400" />,
|
|
32
|
+
title: "Full Streaming Support",
|
|
33
|
+
description: "Stream data from server to client progressively. Perfect for AI applications and real-time updates.",
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
icon: <Sparkles className="w-12 h-12 text-cyan-400" />,
|
|
37
|
+
title: "Next Generation Ready",
|
|
38
|
+
description: "Built from the ground up for modern web applications. Deploy anywhere JavaScript runs.",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className="min-h-screen bg-gradient-to-b from-slate-900 via-slate-800 to-slate-900">
|
|
44
|
+
<section className="relative py-20 px-6 text-center overflow-hidden">
|
|
45
|
+
<div className="absolute inset-0 bg-gradient-to-r from-cyan-500/10 via-blue-500/10 to-purple-500/10"></div>
|
|
46
|
+
<div className="relative max-w-5xl mx-auto">
|
|
47
|
+
<div className="flex items-center justify-center gap-6 mb-6">
|
|
48
|
+
<img
|
|
49
|
+
src="/tanstack-circle-logo.png"
|
|
50
|
+
alt="TanStack Logo"
|
|
51
|
+
className="w-24 h-24 md:w-32 md:h-32"
|
|
52
|
+
/>
|
|
53
|
+
<h1 className="text-6xl md:text-7xl font-black text-white [letter-spacing:-0.08em]">
|
|
54
|
+
<span className="text-gray-300">TANSTACK</span>{" "}
|
|
55
|
+
<span className="bg-gradient-to-r from-cyan-400 to-blue-400 bg-clip-text text-transparent">
|
|
56
|
+
START
|
|
57
|
+
</span>
|
|
58
|
+
</h1>
|
|
59
|
+
</div>
|
|
60
|
+
<p className="text-2xl md:text-3xl text-gray-300 mb-4 font-light">
|
|
61
|
+
The framework for next generation AI applications
|
|
62
|
+
</p>
|
|
63
|
+
<p className="text-lg text-gray-400 max-w-3xl mx-auto mb-8">
|
|
64
|
+
Full-stack framework powered by TanStack Router for React and Solid.
|
|
65
|
+
Build modern applications with server functions, streaming, and type
|
|
66
|
+
safety.
|
|
67
|
+
</p>
|
|
68
|
+
<div className="flex flex-col items-center gap-4">
|
|
69
|
+
<a
|
|
70
|
+
href="https://tanstack.com/start"
|
|
71
|
+
target="_blank"
|
|
72
|
+
rel="noopener noreferrer"
|
|
73
|
+
className="px-8 py-3 bg-cyan-500 hover:bg-cyan-600 text-white font-semibold rounded-lg transition-colors shadow-lg shadow-cyan-500/50"
|
|
74
|
+
>
|
|
75
|
+
Documentation
|
|
76
|
+
</a>
|
|
77
|
+
<p className="text-gray-400 text-sm mt-2">
|
|
78
|
+
Begin your TanStack Start journey by editing{" "}
|
|
79
|
+
<code className="px-2 py-1 bg-slate-700 rounded text-cyan-400">
|
|
80
|
+
/src/routes/index.tsx
|
|
81
|
+
</code>
|
|
82
|
+
</p>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</section>
|
|
86
|
+
|
|
87
|
+
<section className="py-16 px-6 max-w-7xl mx-auto">
|
|
88
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
89
|
+
{features.map((feature, index) => (
|
|
90
|
+
<div
|
|
91
|
+
key={index}
|
|
92
|
+
className="bg-slate-800/50 backdrop-blur-sm border border-slate-700 rounded-xl p-6 hover:border-cyan-500/50 transition-all duration-300 hover:shadow-lg hover:shadow-cyan-500/10"
|
|
93
|
+
>
|
|
94
|
+
<div className="mb-4">{feature.icon}</div>
|
|
95
|
+
<h3 className="text-xl font-semibold text-white mb-3">
|
|
96
|
+
{feature.title}
|
|
97
|
+
</h3>
|
|
98
|
+
<p className="text-gray-400 leading-relaxed">{feature.description}</p>
|
|
99
|
+
</div>
|
|
100
|
+
))}
|
|
101
|
+
</div>
|
|
102
|
+
</section>
|
|
65
103
|
</div>
|
|
66
|
-
|
|
104
|
+
);
|
|
67
105
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
3
|
body {
|
|
4
|
-
|
|
4
|
+
@apply m-0;
|
|
5
5
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
|
|
6
6
|
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
|
|
7
7
|
sans-serif;
|
|
@@ -1,33 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
import { devtools } from '@tanstack/devtools-vite'
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
<%
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
|
|
1
|
+
import { defineConfig } from 'vite'
|
|
2
|
+
import { devtools } from '@tanstack/devtools-vite'
|
|
3
|
+
<% if (addOnEnabled.paraglide) { -%>
|
|
4
|
+
import { paraglideVitePlugin } from "@inlang/paraglide-js"
|
|
5
|
+
<% } -%>
|
|
6
|
+
import { tanstackStart } from '@tanstack/react-start/plugin/vite';
|
|
7
|
+
import viteReact from '@vitejs/plugin-react'
|
|
8
|
+
import viteTsConfigPaths from 'vite-tsconfig-paths'
|
|
9
|
+
import { fileURLToPath, URL } from 'url'
|
|
10
|
+
import tailwindcss from "@tailwindcss/vite"
|
|
11
|
+
<% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportContent(integration) %>
|
|
12
12
|
<% } %>
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
export default defineConfig({
|
|
16
|
-
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
17
|
-
project: './project.inlang',
|
|
18
|
-
outdir: './src/paraglide',
|
|
19
|
-
strategy: ['url'],
|
|
20
|
-
}), <% } %><% for(const integration of integrations.filter(i => i.type === 'vite-plugin')) { %><%- integrationImportCode(integration) %>,<% } %> <% if(fileRouter) { %>tanstackRouter({
|
|
21
|
-
target: "react",
|
|
22
|
-
autoCodeSplitting: true,
|
|
23
|
-
}), <% } %>viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
24
|
-
babel: {
|
|
25
|
-
plugins: ["babel-plugin-react-compiler"],
|
|
26
|
-
},
|
|
27
|
-
}<% } %>)<% if (tailwind) { %>, tailwindcss()<% } %><% if (addOnEnabled['module-federation']) { %>, federation(federationConfig)<% } %>],
|
|
14
|
+
const config = defineConfig({
|
|
28
15
|
resolve: {
|
|
29
16
|
alias: {
|
|
30
17
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
31
18
|
},
|
|
32
|
-
}
|
|
33
|
-
|
|
19
|
+
},
|
|
20
|
+
plugins: [devtools(), <% if (addOnEnabled.paraglide) { %>paraglideVitePlugin({
|
|
21
|
+
project: './project.inlang',
|
|
22
|
+
outdir: './src/paraglide',
|
|
23
|
+
strategy: ['url'],
|
|
24
|
+
}), <% } %><% 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
|
+
}),
|
|
29
|
+
tailwindcss(),
|
|
30
|
+
tanstackStart(),
|
|
31
|
+
viteReact(<% if (addOnEnabled.compiler) { %>{
|
|
32
|
+
babel: {
|
|
33
|
+
plugins: ["babel-plugin-react-compiler"],
|
|
34
|
+
},
|
|
35
|
+
}<% } %>),
|
|
36
|
+
],
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
export default config
|
|
@@ -20,14 +20,9 @@ export function createFrameworkDefinition() {
|
|
|
20
20
|
basePackageJSON,
|
|
21
21
|
optionalPackages,
|
|
22
22
|
supportedModes: {
|
|
23
|
-
'code-router': {
|
|
24
|
-
displayName: 'Code Router',
|
|
25
|
-
description: 'TanStack Router using code to define the routes',
|
|
26
|
-
forceTypescript: true,
|
|
27
|
-
},
|
|
28
23
|
'file-router': {
|
|
29
24
|
displayName: 'File Router',
|
|
30
|
-
description: 'TanStack
|
|
25
|
+
description: 'TanStack Start with file-based routing',
|
|
31
26
|
forceTypescript: true,
|
|
32
27
|
},
|
|
33
28
|
},
|