diff --git a/frameworks/react-cra/add-ons/start/assets/src/demo.start.css.ejs b/frameworks/react-cra/add-ons/start/assets/src/demo.start.css.ejs
new file mode 100644
index 00000000..ca8f6a1b
--- /dev/null
+++ b/frameworks/react-cra/add-ons/start/assets/src/demo.start.css.ejs
@@ -0,0 +1,43 @@
+<% if (tailwind) { ignoreFile() } %>.api-page {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 100vh;
+ padding: 1rem;
+ color: #fff;
+}
+
+.api-page .content {
+ width: 100%;
+ max-width: 2xl;
+ padding: 8rem;
+ border-radius: 1rem;
+ backdrop-filter: blur(1rem);
+ background-color: rgba(0, 0, 0, 0.5);
+ box-shadow: 0 0 1rem 0 rgba(0, 0, 0, 0.1);
+ border: 0.5rem solid rgba(0, 0, 0, 0.1);
+}
+
+.api-page .content h1 {
+ font-size: 2rem;
+ margin-bottom: 1rem;
+}
+
+.api-page .content ul {
+ margin-bottom: 1rem;
+ list-style: none;
+ padding: 0;
+}
+
+.api-page .content li {
+ background-color: rgba(255, 255, 255, 0.1);
+ padding: 0.5rem;
+ border-radius: 0.5rem;
+ border: 1px solid rgba(255, 255, 255, 0.2);
+ backdrop-filter: blur(0.5rem);
+ box-shadow: 0 0 0.5rem 0 rgba(255, 255, 255, 0.1);
+}
+
+.api-page .content li span {
+ font-size: 1.2rem;
+}
\ No newline at end of file
diff --git a/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.api-request.tsx.ejs b/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.api-request.tsx.ejs
index efe09891..62dd8295 100644
--- a/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.api-request.tsx.ejs
+++ b/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.api-request.tsx.ejs
@@ -3,7 +3,9 @@ import { useQuery } from '@tanstack/react-query'
<% } else { %>
import { useEffect, useState } from 'react'
<% } %>
-import { createFileRoute } from '@tanstack/react-router'
+import { createFileRoute } from '@tanstack/react-router'<% if (!tailwind) { %>
+import '../demo.start.css'
+<% } %>
function getNames() {
return fetch('/api/demo-names').then((res) => res.json())
@@ -27,6 +29,7 @@ function Home() {
}, [])
<% } %>
return (
+<% if (tailwind) { %>
+<% } else { %>
+
+
+
Start API Request Demo - Names List
+
+ {names.map((name) => (
+ - {name}
+ ))}
+
+
+
+<% } %>
)
}
\ No newline at end of file
diff --git a/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx b/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx.ejs
similarity index 79%
rename from frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx
rename to frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx.ejs
index 64629c0b..d1fe6ecd 100644
--- a/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx
+++ b/frameworks/react-cra/add-ons/start/assets/src/routes/demo.start.server-funcs.tsx.ejs
@@ -1,7 +1,9 @@
import fs from 'node:fs'
import { useCallback, useState } from 'react'
import { createFileRoute, useRouter } from '@tanstack/react-router'
-import { createServerFn } from '@tanstack/react-start'
+import { createServerFn } from '@tanstack/react-start'<% if (!tailwind) { %>
+import '../demo.start.css'
+<% } %>
const filePath = 'todos.json'
@@ -51,6 +53,7 @@ function Home() {
}, [addTodo, todo])
return (
+<% if (tailwind) { %>
+<% } else { %>
+
+
Start Server Functions - Todo Example
+
+ {todos?.map((t) => (
+ - {t.name}
+ ))}
+
+
+ setTodo(e.target.value)}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter') {
+ submitTodo()
+ }
+ }}
+ placeholder="Enter a new todo..."
+ />
+
+
+
+<% } %>
)
}
diff --git a/frameworks/react-cra/add-ons/start/info.json b/frameworks/react-cra/add-ons/start/info.json
index b86e365d..4fc285dd 100644
--- a/frameworks/react-cra/add-ons/start/info.json
+++ b/frameworks/react-cra/add-ons/start/info.json
@@ -5,6 +5,7 @@
"link": "https://tanstack.com/start/latest",
"modes": ["file-router"],
"type": "add-on",
+ "tailwind": false,
"warning": "TanStack Start is not yet at 1.0 and may change significantly or not be compatible with other add-ons.\nMigrating to Start might require deleting node_modules and re-installing.",
"routes": [
{
@@ -20,10 +21,6 @@
"jsName": "StartApiRequestDemo"
}
],
- "deletedFiles": [
- "./index.html",
- "./src/main.tsx",
- "./src/App.css"
- ],
+ "deletedFiles": ["./index.html", "./src/main.tsx"],
"addOnSpecialSteps": ["rimraf-node-modules"]
}
diff --git a/frameworks/react-cra/project/base/src/components/Header.css.ejs b/frameworks/react-cra/project/base/src/components/Header.css.ejs
new file mode 100644
index 00000000..2dfad00f
--- /dev/null
+++ b/frameworks/react-cra/project/base/src/components/Header.css.ejs
@@ -0,0 +1,18 @@
+<% if (tailwind) { ignoreFile() } %>.header {
+ padding: 0.5rem;
+ display: flex;
+ gap: 0.5rem;
+ background-color: #fff;
+ color: #000;
+ justify-content: space-between;
+}
+
+.nav {
+ display: flex;
+ flex-direction: row;
+}
+
+.nav-item {
+ padding: 0 0.5rem;
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/frameworks/react-cra/project/base/src/components/Header.tsx.ejs b/frameworks/react-cra/project/base/src/components/Header.tsx.ejs
index f9e9d1cd..6a1da358 100644
--- a/frameworks/react-cra/project/base/src/components/Header.tsx.ejs
+++ b/frameworks/react-cra/project/base/src/components/Header.tsx.ejs
@@ -1,13 +1,20 @@
<% if (addOns.length === 0 && integrations.length === 0 && routes.length === 0) { ignoreFile() } %>import { Link } from '@tanstack/react-router'
<% for(const integration of integrations.filter(i => i.type === 'header-user')) { %>
import <%= integration.jsName %> from "<%= relativePath(integration.path) %>";
-<% } %>
+<% } %><% if (!tailwind) { %>
+import './Header.css'<% } %>
export default function Header() {
return (
+<% if (tailwind) { %>