Skip to content

Commit 2ecf732

Browse files
committed
Merge unit-07-haiku-website into intent branch
2 parents 461dabe + c2e7a6a commit 2ecf732

File tree

20 files changed

+5826
-0
lines changed

20 files changed

+5826
-0
lines changed
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
import Link from "next/link"
2+
3+
export function Footer() {
4+
return (
5+
<footer className="border-t border-stone-200 bg-stone-50">
6+
<div className="mx-auto max-w-5xl px-4 py-12">
7+
<div className="grid gap-8 md:grid-cols-4">
8+
<div>
9+
<Link
10+
href="/"
11+
className="text-lg font-semibold text-teal-600"
12+
>
13+
HAIKU
14+
</Link>
15+
<p className="mt-3 text-sm text-stone-500">
16+
Human AI Knowledge Unification. A universal framework
17+
for structured human-AI collaboration.
18+
</p>
19+
</div>
20+
21+
<div>
22+
<h3 className="mb-3 text-xs font-semibold uppercase tracking-wider text-stone-400">
23+
Framework
24+
</h3>
25+
<ul className="space-y-2">
26+
<li>
27+
<Link
28+
href="/methodology"
29+
className="text-sm text-stone-500 hover:text-stone-900"
30+
>
31+
Methodology
32+
</Link>
33+
</li>
34+
<li>
35+
<Link
36+
href="/phases/elaboration"
37+
className="text-sm text-stone-500 hover:text-stone-900"
38+
>
39+
Phases
40+
</Link>
41+
</li>
42+
<li>
43+
<Link
44+
href="/profiles"
45+
className="text-sm text-stone-500 hover:text-stone-900"
46+
>
47+
Profiles
48+
</Link>
49+
</li>
50+
</ul>
51+
</div>
52+
53+
<div>
54+
<h3 className="mb-3 text-xs font-semibold uppercase tracking-wider text-stone-400">
55+
Resources
56+
</h3>
57+
<ul className="space-y-2">
58+
<li>
59+
<Link
60+
href="/getting-started"
61+
className="text-sm text-stone-500 hover:text-stone-900"
62+
>
63+
Getting Started
64+
</Link>
65+
</li>
66+
<li>
67+
<Link
68+
href="/paper"
69+
className="text-sm text-stone-500 hover:text-stone-900"
70+
>
71+
Full Paper
72+
</Link>
73+
</li>
74+
</ul>
75+
</div>
76+
77+
<div>
78+
<h3 className="mb-3 text-xs font-semibold uppercase tracking-wider text-stone-400">
79+
Profiles
80+
</h3>
81+
<ul className="space-y-2">
82+
<li>
83+
<a
84+
href="https://ai-dlc.dev"
85+
target="_blank"
86+
rel="noopener noreferrer"
87+
className="text-sm text-stone-500 hover:text-stone-900"
88+
>
89+
AI-DLC (Software)
90+
</a>
91+
</li>
92+
<li>
93+
<span className="text-sm text-stone-400">
94+
SWARM (Marketing)
95+
</span>
96+
</li>
97+
</ul>
98+
</div>
99+
</div>
100+
101+
<div className="mt-12 border-t border-stone-200 pt-8 text-center text-sm text-stone-400">
102+
&copy; {new Date().getFullYear()} The Bushido Collective. MIT
103+
License.
104+
</div>
105+
</div>
106+
</footer>
107+
)
108+
}
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
"use client"
2+
3+
import Link from "next/link"
4+
import { usePathname } from "next/navigation"
5+
import { useState } from "react"
6+
7+
const navItems = [
8+
{ label: "Methodology", href: "/methodology" },
9+
{ label: "Phases", href: "/phases/elaboration" },
10+
{ label: "Profiles", href: "/profiles" },
11+
{ label: "Getting Started", href: "/getting-started" },
12+
{ label: "Paper", href: "/paper" },
13+
]
14+
15+
export function Header() {
16+
const pathname = usePathname()
17+
const [mobileOpen, setMobileOpen] = useState(false)
18+
19+
const isActive = (href: string) => {
20+
if (href === "/phases/elaboration") {
21+
return pathname.startsWith("/phases")
22+
}
23+
return pathname === href || pathname.startsWith(href + "/")
24+
}
25+
26+
return (
27+
<header className="sticky top-0 z-50 border-b border-stone-200 bg-white/95 backdrop-blur-sm">
28+
<nav className="mx-auto flex max-w-5xl items-center justify-between px-4 py-4">
29+
<Link
30+
href="/"
31+
className="text-xl font-semibold tracking-tight text-stone-900"
32+
>
33+
<span className="text-teal-600">HAIKU</span>
34+
</Link>
35+
36+
{/* Desktop nav */}
37+
<div className="hidden items-center gap-1 md:flex">
38+
{navItems.map((item) => (
39+
<Link
40+
key={item.href}
41+
href={item.href}
42+
className={`rounded-lg px-3 py-2 text-sm transition ${
43+
isActive(item.href)
44+
? "bg-stone-100 font-medium text-stone-900"
45+
: "text-stone-500 hover:bg-stone-50 hover:text-stone-900"
46+
}`}
47+
>
48+
{item.label}
49+
</Link>
50+
))}
51+
</div>
52+
53+
{/* Mobile menu button */}
54+
<button
55+
type="button"
56+
className="rounded-lg p-2 text-stone-500 hover:bg-stone-50 md:hidden"
57+
onClick={() => setMobileOpen(!mobileOpen)}
58+
aria-label="Toggle menu"
59+
>
60+
<svg
61+
className="h-5 w-5"
62+
fill="none"
63+
viewBox="0 0 24 24"
64+
stroke="currentColor"
65+
aria-hidden="true"
66+
>
67+
{mobileOpen ? (
68+
<path
69+
strokeLinecap="round"
70+
strokeLinejoin="round"
71+
strokeWidth={2}
72+
d="M6 18L18 6M6 6l12 12"
73+
/>
74+
) : (
75+
<path
76+
strokeLinecap="round"
77+
strokeLinejoin="round"
78+
strokeWidth={2}
79+
d="M4 6h16M4 12h16M4 18h16"
80+
/>
81+
)}
82+
</svg>
83+
</button>
84+
</nav>
85+
86+
{/* Mobile nav */}
87+
{mobileOpen && (
88+
<div className="border-t border-stone-200 bg-white px-4 py-4 md:hidden">
89+
{navItems.map((item) => (
90+
<Link
91+
key={item.href}
92+
href={item.href}
93+
onClick={() => setMobileOpen(false)}
94+
className={`block rounded-lg px-3 py-2 text-sm ${
95+
isActive(item.href)
96+
? "bg-stone-100 font-medium text-stone-900"
97+
: "text-stone-500 hover:bg-stone-50 hover:text-stone-900"
98+
}`}
99+
>
100+
{item.label}
101+
</Link>
102+
))}
103+
</div>
104+
)}
105+
</header>
106+
)
107+
}

0 commit comments

Comments
 (0)