From 2ca3ed9ebac4405752e35288d9fa624f2ab584df Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Fri, 5 Jun 2026 12:43:23 -0600 Subject: [PATCH] Normalize demo page styling --- .changeset/quiet-demo-surfaces.md | 6 + .../src/components/demo-AIAssistant.tsx | 30 +-- .../components/demo-GuitarRecommendation.tsx | 14 +- .../ai/assets/src/routes/demo/ai-chat.css | 42 ++-- .../ai/assets/src/routes/demo/ai-chat.tsx | 32 ++- .../ai/assets/src/routes/demo/ai-image.tsx | 46 ++-- .../assets/src/routes/demo/ai-structured.tsx | 123 +++++------ .../src/routes/demo/guitars/$guitarId.tsx | 39 ++-- .../assets/src/routes/demo/guitars/index.tsx | 48 ++--- .../assets/src/routes/demo.apollo-client.tsx | 73 +++---- .../assets/src/routes/demo/better-auth.tsx | 128 +++++------ .../clerk/assets/src/routes/demo/clerk.tsx | 42 ++-- .../convex/assets/src/routes/demo/convex.tsx | 75 +++---- .../assets/src/components/demo.chat-area.tsx | 10 +- .../assets/src/components/demo.messages.tsx | 18 +- .../db/assets/src/routes/demo/db-chat.tsx | 8 +- .../assets/src/routes/demo/drizzle.tsx.ejs | 108 +++------- .../components/demo.FormComponents.tsx.ejs | 24 +-- .../src/routes/demo/form.address.tsx.ejs | 21 +- .../src/routes/demo/form.simple.tsx.ejs | 21 +- .../mcp/assets/src/routes/demo/mcp-todos.tsx | 28 +-- .../neon/assets/src/routes/demo/neon.tsx | 95 ++++---- .../oRPC/assets/src/routes/demo/orpc-todo.tsx | 28 +-- .../assets/src/routes/demo.i18n.tsx.ejs | 13 +- .../assets/src/routes/demo/posthog.tsx | 41 ++-- .../assets/src/routes/demo/powersync.tsx | 37 ++-- .../assets/src/routes/demo/prisma.tsx.ejs | 108 +++------- .../assets/src/routes/demo/sentry.testing.tsx | 173 ++++++--------- .../assets/src/lib/demo-store-devtools.tsx | 6 +- .../assets/src/routes/demo/store.tsx.ejs | 23 +- .../src/components/storybook/button.tsx | 49 ++--- .../src/components/storybook/dialog.tsx | 28 ++- .../assets/src/components/storybook/input.tsx | 31 ++- .../src/components/storybook/radio-group.tsx | 30 +-- .../src/components/storybook/slider.tsx | 34 +-- .../assets/src/routes/demo/storybook.tsx | 50 ++--- .../assets/src/components/blocks/media.tsx | 18 +- .../assets/src/components/blocks/quote.tsx | 16 +- .../src/components/markdown-content.tsx | 87 +++++--- .../assets/src/components/pagination.tsx | 22 +- .../strapi/assets/src/components/search.tsx | 24 +-- .../assets/src/components/strapi-image.tsx | 30 +-- .../src/routes/demo/strapi.$articleId.tsx | 115 +++++----- .../strapi/assets/src/routes/demo/strapi.tsx | 107 ++++----- .../tRPC/assets/src/routes/demo/trpc-todo.tsx | 28 +-- .../assets/src/routes/demo/table.tsx.ejs | 45 ++-- .../src/routes/demo/tanstack-query.tsx.ejs | 56 ++--- .../assets/src/components/workos-user.tsx | 2 +- .../workos/assets/src/routes/demo/workos.tsx | 76 +++---- .../react/project/base/src/styles.css.ejs | 203 ++++++++++++++++++ .../assets/src/routes/demo.better-auth.tsx | 126 ++++++----- .../convex/assets/src/routes/demo/convex.tsx | 73 +++---- .../form/assets/src/routes/demo.form.tsx.ejs | 44 ++-- .../routes/demo.sentry.bad-event-handler.tsx | 25 ++- .../assets/src/routes/demo.store.tsx.ejs | 23 +- .../strapi/assets/src/routes/demo/strapi.tsx | 26 +-- .../src/routes/demo/strapi_.$articleId.tsx | 29 +-- .../solid/project/base/src/styles.css.ejs | 203 ++++++++++++++++++ 58 files changed, 1580 insertions(+), 1480 deletions(-) create mode 100644 .changeset/quiet-demo-surfaces.md diff --git a/.changeset/quiet-demo-surfaces.md b/.changeset/quiet-demo-surfaces.md new file mode 100644 index 00000000..36c68063 --- /dev/null +++ b/.changeset/quiet-demo-surfaces.md @@ -0,0 +1,6 @@ +--- +"@tanstack/create": patch +"@tanstack/cli": patch +--- + +Normalize generated demo pages to use the base template styling instead of bespoke full-page gradients and mismatched color treatments. diff --git a/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx b/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx index b896cbeb..2bf342c6 100644 --- a/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx +++ b/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-AIAssistant.tsx @@ -24,7 +24,7 @@ function Messages({ messages }: { messages: ChatMessages }) { if (!messages.length) { return ( -
+
Ask me anything! I'm here to help.
) @@ -36,9 +36,7 @@ function Messages({ messages }: { messages: ChatMessages }) {
{parts.map((part, index) => { @@ -46,15 +44,15 @@ function Messages({ messages }: { messages: ChatMessages }) { return (
{role === 'assistant' ? ( -
+
AI
) : ( -
+
Y
)} -
+
{part.content}
@@ -87,7 +85,7 @@ export default function AIAssistant() {
{isOpen && ( -
-
-

AI Assistant

+
+
+

+ AI Assistant +

@@ -110,7 +110,7 @@ export default function AIAssistant() { -
+
{ e.preventDefault() @@ -125,7 +125,7 @@ export default function AIAssistant() { value={input} onChange={(e) => setInput(e.target.value)} placeholder="Type your message..." - className="w-full rounded-lg border border-orange-500/20 bg-gray-800/50 pl-3 pr-10 py-2 text-sm text-white placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-orange-500/50 focus:border-transparent resize-none overflow-hidden" + className="demo-textarea pr-10 text-sm" rows={1} style={{ minHeight: '36px', maxHeight: '120px' }} onInput={(e) => { @@ -145,7 +145,7 @@ export default function AIAssistant() { diff --git a/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx b/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx index 1d5f2444..0eb62dc9 100644 --- a/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx +++ b/packages/create/src/frameworks/react/add-ons/ai/assets/src/components/demo-GuitarRecommendation.tsx @@ -11,7 +11,7 @@ export default function GuitarRecommendation({ id }: { id: string }) { return null } return ( -
+
-

{guitar.name}

-

+

+ {guitar.name} +

+

{guitar.shortDescription}

-
+
${guitar.price}
diff --git a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css index 549ca5cd..8dc5d990 100644 --- a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css +++ b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.css @@ -1,5 +1,5 @@ @import 'tailwindcss'; -@import 'highlight.js/styles/github-dark.css'; +@import 'highlight.js/styles/github.css'; @source "../../../../node_modules/streamdown/dist/*.js"; /* Custom scrollbar styles */ @@ -28,7 +28,7 @@ html { /* Markdown content styles */ .prose { max-width: none; - color: #e5e7eb; /* text-gray-200 */ + color: var(--sea-ink-soft); } /* .prose p { @@ -37,15 +37,15 @@ html { } */ .prose code { - color: #e5e7eb; - background-color: rgba(31, 41, 55, 0.5); + color: var(--sea-ink); + background-color: var(--chip-bg); padding: 0.2em 0.4em; border-radius: 0.375rem; font-size: 0.875em; } .prose pre { - background-color: rgba(31, 41, 55, 0.5); + background-color: var(--chip-bg); border-radius: 0.5rem; padding: 1rem; margin: 1.25em 0; @@ -63,7 +63,7 @@ html { .prose h2, .prose h3, .prose h4 { - color: #f9fafb; /* text-gray-50 */ + color: var(--sea-ink); /* margin-top: 2em; */ /* margin-bottom: 1em; */ } @@ -81,27 +81,27 @@ html { } .prose blockquote { - border-left-color: #f97316; /* orange-500 */ - background-color: rgba(249, 115, 22, 0.1); + border-left-color: var(--lagoon-deep); + background-color: var(--chip-bg); padding: 1em; margin: 1.25em 0; border-radius: 0.5rem; } .prose hr { - border-color: rgba(249, 115, 22, 0.2); + border-color: var(--line); margin: 2em 0; } .prose a { - color: #f97316; /* orange-500 */ + color: var(--lagoon-deep); text-decoration: underline; text-decoration-thickness: 0.1em; text-underline-offset: 0.2em; } .prose a:hover { - color: #fb923c; /* orange-400 */ + color: var(--sea-ink); } .prose table { @@ -113,11 +113,11 @@ html { .prose th, .prose td { padding: 0.75em; - border: 1px solid rgba(249, 115, 22, 0.2); + border: 1px solid var(--line); } .prose th { - background-color: rgba(249, 115, 22, 0.1); + background-color: var(--chip-bg); font-weight: 600; } @@ -181,16 +181,16 @@ html { .prose th, .prose td { - border: 1px solid rgba(249, 115, 22, 0.2); + border: 1px solid var(--line); padding: 0.5em; } .prose th { - background-color: rgba(249, 115, 22, 0.1); + background-color: var(--chip-bg); } .prose strong { - color: #f9fafb; /* text-gray-50 */ + color: var(--sea-ink); font-weight: 600; } @@ -199,23 +199,23 @@ html { } .prose blockquote { - border-left: 4px solid #f97316; /* orange-500 */ + border-left: 4px solid var(--lagoon-deep); padding-left: 1em; margin: 1em 0; - color: #d1d5db; /* text-gray-300 */ + color: var(--sea-ink-soft); } /* Ensure code blocks match the AI's formatting */ .prose code { - color: #e5e7eb; - background-color: rgba(31, 41, 55, 0.5); + color: var(--sea-ink); + background-color: var(--chip-bg); padding: 0.2em 0.4em; border-radius: 0.375rem; font-size: 0.875em; } .prose pre { - background-color: rgba(31, 41, 55, 0.5); + background-color: var(--chip-bg); border-radius: 0.5rem; padding: 1rem; margin: 1em 0; diff --git a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx index 2a7f8d18..cc59b8e5 100644 --- a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx +++ b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-chat.tsx @@ -24,10 +24,8 @@ function InitialLayout({ children }: { children: React.ReactNode }) { return (
-

- TanStack Chat -

-

+

TanStack Chat

+

You can ask me about anything, I might or might not have a good answer, but you can still ask.

@@ -39,7 +37,7 @@ function InitialLayout({ children }: { children: React.ReactNode }) { function ChattingLayout({ children }: { children: React.ReactNode }) { return ( -
+
{children}
) @@ -96,17 +94,17 @@ function Messages({ key={message.id} className={`p-4 ${ message.role === 'assistant' - ? 'bg-linear-to-r from-orange-500/5 to-red-600/5' + ? 'bg-[var(--chip-bg)]' : 'bg-transparent' }`} >
{message.role === 'assistant' ? ( -
+
AI
) : ( -
+
Y
)} @@ -115,7 +113,7 @@ function Messages({ if (part.type === 'text' && part.content) { return (
{part.content} @@ -145,7 +143,7 @@ function Messages({ ? onStopSpeak() : onSpeak(textContent, message.id) } - className="flex-shrink-0 p-2 text-gray-400 hover:text-orange-400 transition-colors" + className="demo-muted flex-shrink-0 p-2 transition-colors hover:text-[var(--lagoon-deep)]" title={isPlaying ? 'Stop speaking' : 'Read aloud'} > {isPlaying ? ( @@ -190,7 +188,7 @@ function ChatPage() { const Layout = messages.length ? ChattingLayout : InitialLayout return ( -
+
diff --git a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx index bdf8d933..ad6cac55 100644 --- a/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx +++ b/packages/create/src/frameworks/react/add-ons/ai/assets/src/routes/demo/ai-image.tsx @@ -73,26 +73,25 @@ function ImagePage() { } return ( -
-
+
+
- -

Image Generation

+ +

Image Generation

- {/* Input Panel */}
-
-
-