Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions prototypes/docusaurus/sidebars.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
// - deployment/troubleshooting-when-using-webpacker
// - misc/asset-pipeline
//
// URL-compatibility stubs (redirect to a current, live page):
// - pro/home-pro (→ pro/react-on-rails-pro)
//
// Contributing/Resources pages (linked from introduction.md instead of sidebar):
// - misc/doctrine
// - misc/style
Expand All @@ -24,6 +27,7 @@ const sidebars: SidebarsConfig = {
collapsed: false,
items: [
'getting-started/quick-start',
'getting-started/examples-and-references',
'getting-started/create-react-on-rails-app',
'getting-started/tutorial',
'getting-started/installation-into-an-existing-rails-app',
Expand Down Expand Up @@ -172,6 +176,7 @@ const sidebars: SidebarsConfig = {
type: 'category',
label: 'Migration Guides',
items: [
'migrating/example-migrations',
'migrating/migrating-from-react-rails',
'migrating/migrating-from-vite-rails',
'migrating/migrating-from-webpack-to-rspack',
Expand Down Expand Up @@ -201,6 +206,7 @@ const sidebars: SidebarsConfig = {
link: { type: 'doc', id: 'pro/react-server-components/index' },
items: [
'pro/react-server-components/purpose-and-benefits',
'pro/react-server-components/success-stories',
'pro/react-server-components/how-react-server-components-work',
'pro/react-server-components/rendering-flow',
'pro/react-server-components/tutorial',
Expand All @@ -211,6 +217,7 @@ const sidebars: SidebarsConfig = {
'pro/react-server-components/selective-hydration-in-streamed-components',
'pro/react-server-components/flight-protocol-syntax',
'pro/react-server-components/upgrading-existing-pro-app',
'pro/react-server-components/rspack-compatibility',
'pro/react-server-components/glossary',
{
type: 'category',
Expand All @@ -221,6 +228,7 @@ const sidebars: SidebarsConfig = {
'migrating/rsc-component-patterns',
'migrating/rsc-context-and-state',
'migrating/rsc-data-fetching',
'migrating/rsc-http-response-patterns',
'migrating/rsc-third-party-libs',
'migrating/rsc-troubleshooting',
'migrating/rsc-flight-payload',
Expand Down
36 changes: 30 additions & 6 deletions prototypes/docusaurus/src/pages/examples.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,46 @@ import Layout from '@theme/Layout';
import {docsRoutes} from '../constants/docsRoutes';
import styles from './examples.module.css';

const evaluationPaths = [
type EvaluationPath = {
eyebrow: string;
title: string;
description: string;
cta: string;
} & ({to: string; href?: never} | {href: string; to?: never});

const evaluationPaths: EvaluationPath[] = [
{
eyebrow: 'Evaluator path',
title: 'Compare setup approaches',
description:
'Start with the docs landing page to choose between new app setup, existing app install, migration, or Pro evaluation.',
href: docsRoutes.docsGuide,
to: docsRoutes.docsGuide,
cta: 'Open the docs guide',
},
{
eyebrow: 'Migration path',
title: 'Move from react-rails',
description:
'Follow a migration sequence validated against a real open-source example app instead of reconstructing it from old guides.',
href: docsRoutes.migrateFromReactRails,
to: docsRoutes.migrateFromReactRails,
cta: 'Use the react-rails guide',
},
{
eyebrow: 'Upgrade path',
title: 'Move from OSS to Pro',
description:
'If your current app needs more SSR throughput or RSC support, compare OSS and Pro before adding the Pro package.',
href: docsRoutes.ossVsPro,
to: docsRoutes.ossVsPro,
cta: 'Compare OSS and Pro',
},
{
eyebrow: 'RSC proof path',
title: 'Inspect the RSC performance demo',
description:
'Open the LocalHub benchmark dashboard with Lighthouse reports, bundle-size evidence, and SSR/client/RSC comparisons.',
href: 'https://rsc.reactonrails.com/search-performance',
cta: 'Open RSC benchmark',
},
Comment thread
cursor[bot] marked this conversation as resolved.
];

const exampleApps = [
Expand All @@ -51,6 +66,12 @@ const exampleApps = [
'Official Vite Rails sample app used to document migration preflight and dependency lockfile issues.',
href: 'https://github.com/ElMassimo/vite_ruby/tree/main/examples/rails',
},
{
title: 'react-on-rails-demo-marketplace-rsc',
description:
'Public React on Rails Pro + RSC marketplace demo behind the LocalHub Lighthouse and bundle-size comparisons.',
href: 'https://github.com/shakacode/react-on-rails-demo-marketplace-rsc',
},
];

export default function ExamplesPage(): ReactNode {
Expand Down Expand Up @@ -79,7 +100,10 @@ export default function ExamplesPage(): ReactNode {
<p className={styles.cardEyebrow}>{path.eyebrow}</p>
<h3>{path.title}</h3>
<p>{path.description}</p>
<Link className={styles.cardLink} to={path.href}>
<Link
className={styles.cardLink}
{...('href' in path ? {href: path.href} : {to: path.to})}
>
{path.cta}
</Link>
</article>
Expand All @@ -90,7 +114,7 @@ export default function ExamplesPage(): ReactNode {
<section className="container">
<div className={styles.sectionHeader}>
<p className={styles.sectionEyebrow}>Reference repos</p>
<h2>Open-source apps that map to the docs.</h2>
<h2>Public apps and demos that map to the docs.</h2>
</div>
<div className={styles.grid}>
{exampleApps.map((app) => (
Expand Down
14 changes: 13 additions & 1 deletion prototypes/docusaurus/src/pages/pro.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ const featureRows = [
oss: 'Docs only',
pro: 'Included',
},
{
feature: 'Public RSC demo with Lighthouse and bundle evidence',
oss: 'View-only',
pro: 'Included implementation patterns',
},
{
feature: 'Support access with ShakaCode maintainers',
oss: 'Community channels',
Expand Down Expand Up @@ -76,6 +81,11 @@ export default function ProPage(): ReactNode {
to={docsRoutes.proOverview}>
Open Pro docs overview
</Link>
<Link
className="button button--secondary button--lg"
href="https://rsc.reactonrails.com/search-performance">
View RSC performance demo
</Link>
<Link
className="button button--secondary button--lg"
href="https://www.shakacode.com/react-on-rails-pro/">
Expand Down Expand Up @@ -144,7 +154,9 @@ export default function ProPage(): ReactNode {
</div>
<p className={styles.note}>
Need pricing, implementation guidance, or a free-license discussion? Visit{' '}
<a href="/docs/pro">the Pro docs landing page</a>.
<a href="/docs/pro">the Pro docs landing page</a>. Want proof first?
Open the{' '}
<a href="https://rsc.reactonrails.com/search-performance">RSC performance dashboard</a>.
Comment on lines +157 to +159
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 External link opens in same tab

The plain <a> tag linking to the RSC performance dashboard uses no target or rel attribute, so it navigates the user away from the Pro page in the same tab. The Link component used for the hero button above correctly delegates external-link behavior to Docusaurus (which adds target="_blank" and rel="noopener noreferrer" for href props), but this inline <a> does not get the same treatment. Consider replacing it with Docusaurus's Link component or adding target="_blank" rel="noopener noreferrer" for consistent UX.

</p>
</section>
</main>
Expand Down
Loading