# Waggle UI/UX Component Inventory — Marketing Landing (`apps/www`)
**Date:** 2026-04-29
**Surface:** Marketing landing site (waggle-os.ai)
**Repo path:** `D:/Projects/waggle-os/apps/www`
**Sibling inventory:** OS shell (`apps/web`) lives in `briefs/2026-04-29-ui-ux-inventory-os-shell.md`. The two surfaces share **only the token vocabulary**; chrome paradigms, tech stacks, and component models diverge.
**Purpose:** Brief Claude Design (explore + research mode) on the current landing-page UI/UX state so it can produce a polish pass without re-discovering the surface area.
**Reading order for Claude Design:**
1. §1 — Tech stack and entry point
2. §2 — Component inventory (mounted, orphan, missing)
3. §3 — Design tokens (canonical `globals.css`)
4. §4 — Brand assets and usage rules
5. §5 — Anti-patterns (binding rejects)
6. §6 — Drift and polish opportunities
7. §7 — Source artifacts to read
8. §8 — Suggested polish-pass briefing shape
---
## §1. Tech stack — actual
- **Build:** Vite + React 19
- **Styling:** Pure CSS with custom properties (`apps/www/src/styles/globals.css`, 96 lines). **Tailwind is NOT installed in `apps/www`** despite v2.3 spec calling for Tailwind 4. The file's own header says "No Tailwind — pure CSS with custom properties for this static site."
- **Icons:** `lucide-react`
- **Entry:** `apps/www/src/main.tsx` → `src/App.tsx`
- **Tests:** `apps/www/__tests__/BrandPersonasCard.test.tsx` (single test file)
- **Data:** `apps/www/src/data/personas.ts` (13-bee shape per LOCKED 2026-04-22 IA)
**Drift to flag:** v2.3 ship spec (`briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` §5) prescribes Tailwind 4 utilities. Polish must reconcile — either keep pure CSS for substrate independence and amend the spec, or migrate. Mixed approach will rot.
---
## §2. Components
### §2.1 Currently mounted in `App.tsx` (9 components, in order)
```tsx
// apps/www/src/App.tsx
const App = () => (
);
```
| # | Component | File | LOC | Notes |
|---|---|---|---|---|
| 1 | `Navbar` | `components/Navbar.tsx` | 77 | Implemented |
| 2 | `Hero` | `components/Hero.tsx` | 50 | Mounts `bee-orchestrator-dark.png` 176px center — **violates v2.3 anti-pattern** (bees footer-mark only on primary landing). Copy is legacy "Your AI Operating System / AI Agents That Remember"; v2.3 wants variant A "Your AI doesn't reset. Your work doesn't either." or variant B "AI workspace that satisfies your CISO." |
| 3 | `Features` | `components/Features.tsx` | 58 | Implemented |
| 4 | `CrownJewels` | `components/CrownJewels.tsx` | 93 | Legacy "Crown Jewels" framing — not in v2.3 spec; replacement candidate by Proof/SOTA band (5 cards) |
| 5 | `HowItWorks` | `components/HowItWorks.tsx` | 51 | Likely 3-step or 5-step legacy. v1.1 wireframe LOCKS 5 steps (Capture/Encode/Retrieve/Reason/Audit); v2.3 collapses to 3 steps (Install once / Work normally / Compound). Reconcile. |
| 6 | `Pricing` | `components/Pricing.tsx` | 134 | Verify tier count: v1.1 wireframe = 3 tiers (Solo/Pro/Teams) + KVARK in Enterprise card; v2.3 ship = **4 tiers** (Free/Pro/Teams/Enterprise). PM trail favors v2.3 4-tier. |
| 7 | `Enterprise` | `components/Enterprise.tsx` | 34 | KVARK bridge implementation |
| 8 | `BetaSignup` | `components/BetaSignup.tsx` | 62 | Legacy beta CTA; **v2.3 spec removes BetaSignup entirely** — Download is the only conversion. Retire. |
| 9 | `Footer` | `components/Footer.tsx` | 26 | Tiny — v2.3 §3 SECTION 10 requires 5-column rebuild (Product / Research / OSS / Company / Legal) with Egzakta attribution and optional small monochrome bee mark |
### §2.2 Orphan / unmounted components
| Component | File | LOC | State |
|---|---|---|---|
| `BrandPersonasCard` | `components/BrandPersonasCard.tsx` | **419** | **Implemented but NOT imported into `App.tsx` — orphan.** Has its own test (`__tests__/BrandPersonasCard.test.tsx`). Per v1.1 LOCKED wireframe + LOCKED 2026-04-22 personas decisions, this is the canonical 13-bee `6+6+1` personas grid. v2.3 evolved away from this toward a 17-agent-persona `4×4 + Coordinator sidebar` model. Polish must decide: restore the 13-bee grid, rebuild as 17-agent grid, or replace. |
### §2.3 Specified in v2.3 but not yet implemented
Per `briefs/2026-04-28-claude-design-landing-v2.3-prompt.md` §3 + §5, the v2.3 ship version requires these components which do **not** exist in `apps/www/src/components/`:
| Spec'd component | Spec section | Notes |
|---|---|---|
| `` with variant resolver | §3 SECTION 1 | Hero exists but not as variant component; `lib/hero-headline-resolver.ts` not present |
| `` (5-card elastic grid) | §3 SECTION 2 | Not implemented; replaces `CrownJewels` semantically. Cards in order: PROVENANCE, SOURCE (Apache 2.0), NETWORK (Zero cloud), COMPLIANCE, BREADTH (11 sources) |
| `` | §3 SECTION 3 | 11 logo tiles (4×3 / 3×4 / 2×6) + 2 sync-mode callouts (Local continuous, Cloud on-demand) + 3-claim feature stripe |
| `` | §3 SECTION 4 | Window mockup (researcher/writer/analyst/coordinator tiles with violet pulse + mint done) + message bus visualization + 3 feature points + JetBrains Mono code snippet |
| `` 3-step | §3 SECTION 5 | Existing `HowItWorks` is 5-step from v1.1 — v2.3 simplified to 3 steps |
| `` 4×4 + Coordinator sidebar | §3 SECTION 6 | 16 agent personas in 4×4 grid + 17th (Coordinator) as sidebar callout. Tile = name + 1-line role only (no tool counts, no model badges) |
| `` 4-tier + billing toggle + collapsible compare | §3 SECTION 7 | Free $0 / Pro $19 ($189/yr) / Teams $49/seat ($489/yr, 3-seat min) / Enterprise (consultative, KVARK). Trial is a CTA inside Pro card, not a separate tier. |
| `` | §3 SECTION 8 | 5 trust signals (Sovereign → Compliance → OSS → Methodology → Egzakta) + Egzakta spine + hex-texture-dark.png at 8–12% soft-light + MCP one-line callout |
| `` + KVARK bridge | §3 SECTION 9 | Headline "Stop pasting context. Start using AI that remembers." + 3 CTAs (Download / Compare tiers / KVARK) |
| Updated `