feat: scaffold holiday booking project
This commit is contained in:
23
src/components/Section.tsx
Normal file
23
src/components/Section.tsx
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { ReactNode } from 'react';
|
||||
|
||||
type SectionProps = {
|
||||
eyebrow?: string;
|
||||
title: string;
|
||||
description?: string;
|
||||
children: ReactNode;
|
||||
id?: string;
|
||||
};
|
||||
|
||||
export function Section({ eyebrow, title, description, children, id }: SectionProps) {
|
||||
return (
|
||||
<section id={id} className="section-shell">
|
||||
<div className="section-heading">
|
||||
{eyebrow ? <p className="section-eyebrow">{eyebrow}</p> : null}
|
||||
<h2>{title}</h2>
|
||||
{description ? <p className="section-description">{description}</p> : null}
|
||||
</div>
|
||||
{children}
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
20
src/components/SiteFooter.tsx
Normal file
20
src/components/SiteFooter.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
export function SiteFooter() {
|
||||
const year = new Date().getFullYear();
|
||||
|
||||
return (
|
||||
<footer className="site-footer">
|
||||
<div>
|
||||
<p className="footer-label">Status</p>
|
||||
<p>Phase 1 scaffold underway.</p>
|
||||
</div>
|
||||
<div>
|
||||
<p className="footer-label">Build</p>
|
||||
<p>
|
||||
{year} • {process.env.NEXT_PUBLIC_BUILD_COMMIT || 'local'} • iteration{' '}
|
||||
{process.env.NEXT_PUBLIC_BUILD_ITERATION || '0'}
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
|
||||
29
src/components/SiteHeader.tsx
Normal file
29
src/components/SiteHeader.tsx
Normal file
@@ -0,0 +1,29 @@
|
||||
const navItems = [
|
||||
{ href: '#foundation', label: 'Foundation' },
|
||||
{ href: '#stack', label: 'Stack' },
|
||||
{ href: '#data', label: 'Data model' },
|
||||
{ href: '#launch', label: 'Launch' },
|
||||
];
|
||||
|
||||
export function SiteHeader() {
|
||||
return (
|
||||
<header className="site-header">
|
||||
<div className="brand-lockup">
|
||||
<span className="brand-mark">HPB</span>
|
||||
<div>
|
||||
<p className="brand-kicker">Project scaffold</p>
|
||||
<h1>Holiday Property Booking</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav aria-label="Primary" className="site-nav">
|
||||
{navItems.map((item) => (
|
||||
<a key={item.href} href={item.href}>
|
||||
{item.label}
|
||||
</a>
|
||||
))}
|
||||
</nav>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user