feat(web): app shell, router, theme (PLAN §4.3)#17
Merged
Conversation
…4.3) - Add @solidjs/router with AppShell layout (header, main, footer) and routes / and /recipes/:id. - Home and recipe placeholder pages; remove scaffold counter and App.css. - Global palette: warm bread surfaces, cool slate–teal accents; safe-area padding on #root. - Document shell in apps/web/README; mark PLAN §4.3 complete. Made-with: Cursor
There was a problem hiding this comment.
Pull request overview
Implements PLAN §4.3 for the SolidJS web app by introducing client-side routing with a shared app shell layout and updating global styling/theme tokens to a bread-appropriate palette and responsive shell.
Changes:
- Add
@solidjs/routerand wire up routes for/(home) and/recipes/:id(placeholder detail page). - Introduce a shared
AppShelllayout (header/main/footer) and basic page-level styles for the new routes. - Refresh global CSS variables and container styling (palette, safe-area padding, responsive max-width shell).
Reviewed changes
Copilot reviewed 11 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Locks @solidjs/router@0.16.1 and updates dependency graph. |
| PLAN.md | Marks PLAN §4.3 as complete. |
| apps/web/package.json | Adds @solidjs/router dependency (exact version). |
| apps/web/src/App.tsx | Replaces scaffold counter app with router + routes using AppShell root layout. |
| apps/web/src/App.css | Removes old scaffold-specific styles. |
| apps/web/src/index.css | Updates global theme tokens and app container layout (safe-area + responsive shell). |
| apps/web/src/layout/AppShell.tsx | Adds shared layout component used as Router root. |
| apps/web/src/layout/AppShell.css | Styles header/main/footer shell. |
| apps/web/src/pages/Home.tsx | Adds placeholder home route component. |
| apps/web/src/pages/RecipePage.tsx | Adds placeholder recipe detail route component using route params. |
| apps/web/src/pages/Page.css | Adds shared page typography/layout helpers used by the new pages. |
| apps/web/README.md | Documents routing + app shell and where global/layout styles live. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+14
to
+16
| --accent: #3a6f82; | ||
| --accent-hover: #2d5a6a; | ||
| --accent-bg: rgba(58, 111, 130, 0.12); |
There was a problem hiding this comment.
--accent-hover is defined here (and in the dark-scheme override) but isn’t used anywhere in the current styles. Consider either using it for hover states (e.g., link hover colors) or removing it to avoid carrying unused design tokens.
- Enable useExplicitType, useArrowFunction, and style/noDefaultExport (with overrides for Vite and openapi-ts config entrypoints). - Refactor app and API surface to named exports and const arrow functions; keep explicit types on apiClient and SDK wrappers. - Add Cursor rule for no default exports across TS/TSX. Made-with: Cursor
Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Completes PLAN §4.3: @solidjs/router, shared AppShell (header with site title link, main outlet, footer), routes
/and/recipes/:id(detail placeholder for §4.5). Global styles: warm bread surfaces, cool complementary teal accents, safe-area padding, responsive max-width shell.Follow-up commits add lint and export conventions for the web app and repo-wide Cursor guidance.
Features (§4.3)
Appas root routes; Home and RecipePage page components.<A>to home), main content area, footer;childrenfrom the router (props destructured on the shell component).index.csstheme tokens and base layout;AppShell.css,Page.css; removal of default ViteApp.cssin favour of the new structure.Tooling and conventions
apps/web/biome.json):complexity/useArrowFunction,nursery/useExplicitType,style/noDefaultExport. Overrides turn offnoDefaultExportonly forvite.config.tsandopenapi-ts.config.ts(tooling expects a default export).export defaultinsrc/); components and API helpers useconst+ arrow functions with explicit types where required;apiClienttyped asClient;listRecipes/getRecipeByIdmirror the generated SDK with explicit return types..cursor/rules/no-default-export-typescript.mdcdocuments the no–default-export rule for all*.ts/*.tsxfiles (with the same Vite/OpenAPI exceptions).Other
PLAN.md/apps/web/README.mdupdated for this milestone where applicable.Checklist
pnpm --filter web lintpnpm --filter web testpnpm --filter web buildMade with Cursor