-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
enhancementNew feature or requestNew feature or request
Description
As a developer, I want the logo, navigation buttons, and title content to be part of a shared layout so that all pages in the project repository have a consistent header and avoid duplication.
🧠 Context
Right now, the logo and top navigation buttons (About, Contribute) are implemented directly in the Header component:
<img src="/ccss-logo-2022.png" alt="Logo" className={styles.logo} />
<Button label="About" icon={<Info size={18} />} type="ghost" />
<Button label="Contribute" icon={<Plus size={16} />} type="outline" />This code is not shared across pages, which means other pages (e.g. a project detail view or future guide pages) would need to duplicate it manually. To improve maintainability and enforce a consistent layout, this header logic should be moved to a shared layout wrapper.
🛠️ Implementation Plan
-
Create a shared layout component
- File:
src/layouts/DefaultLayout.tsx - Wrap the logo, buttons, and any shared elements
- Include a
<main>{children}</main>block so other content can render inside it
- File:
-
Move the header content
- Move the existing
Headercode into the new layout component - Preserve all styling and logic from
Header.tsx
- Move the existing
-
Update pages to use the layout
- For all routes or pages (e.g.
app/page.tsx), wrap the content with<DefaultLayout>...</DefaultLayout>
- For all routes or pages (e.g.
-
Delete or refactor the old
Headercomponent if no longer needed
✅ Acceptance Criteria
- A shared layout component exists at
src/layouts/DefaultLayout.tsx - The layout contains the logo, "About" and "Contribute" buttons, and title/subtitle
- The UI matches the current design with no regressions in spacing or responsiveness
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
Ready