--- name: rasengan-pages description: Page and layout component patterns for Rasengan.js. Covers page components, layouts, metadata, MDX pages, entry point setup, HTML template, navigation, error boundaries, and 404 handling. Use when creating or modifying .page.tsx, .page.mdx, layout.tsx, main.tsx, template.tsx, or index.ts files. license: MIT metadata: author: dilane3 framework: rasengan version: '2.0.0' --- # Rasengan.js Page & Layout Patterns ## When to Activate - Creating or editing a `.page.tsx` / `.page.mdx` file - Creating or editing a `layout.tsx` file - Setting up `src/main.tsx` (App component) or `src/template.tsx` (HTML shell) - Writing `src/index.ts` (entry point) - Defining page metadata (title, description, Open Graph, Twitter) - Handling page-level errors or 404 routes - Using MDX pages with `@rasenganjs/mdx` ## Entry Point ```ts import { renderApp } from 'rasengan/client'; import App from './main'; import AppRouter from '@/app/app.router'; renderApp(App, AppRouter, { reactStrictMode: true }); ``` Parameters: - `App` — Root App component (default import from `./main`) - `AppRouter?` — Optional for config-based routing. Omit for file-based routing where router is defined inside `main.tsx` - `options?` — `{ reactStrictMode?: boolean }` ## Root App Component `src/main.{jsx,tsx}`: ```tsx import { type AppProps } from 'rasengan'; export default function App({ Component, children }: AppProps) { return ( {children} ); } ``` - Must default-export a function receiving `AppProps` (`{ Component, children }`) - Wrap `` around children to enable routing - Place global providers (ThemeProvider, I18nProvider, etc.) here ## HTML Template `src/template.{jsx,tsx}`: ```tsx import { type TemplateProps } from 'rasengan'; export default function Template({ Head, Body, Script }: TemplateProps) { return (