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

+ +
+
+<% } %> ) } \ 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

+ +
+ 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) { %>