feat(site): port stitch design system + seed-ready content model
Ports the "Technical Editorial" design sample into real TSX wired to Payload globals/collections. Home/About/Projects (list+detail)/Contact pages render against Payload data. Expands schemas (Home principles, About timeline/skills/gear, Contact channels) to cover the full design surface. Adds seed script that populates realistic AI-drafted content for first boot. Defers writing/resume routes per scope cut. - Design tokens: Material-3 palette + Space Grotesk/Inter typography scale + dot-grid + glassmorphism utilities - Shared layout: Nav, Footer, StatusTerminal, GridOverlay, Button, TechChip in src/components/site - Schemas: expand 5 globals + 6 collections; add auto-slug hook - Seed: scripts/seed.ts — idempotent upsert for media, categories, 6 projects, 8 gear, 3 posts, 5 globals; generates placeholder admin - Contact: form + /api/contact route with optional Turnstile verify - Rename TURNSTILE_SITE_KEY -> NEXT_PUBLIC_TURNSTILE_SITE_KEY (client) - Remove dead src/components/SiteHeader|SiteFooter|StatusTerminal
This commit is contained in:
25
src/components/site/TechChip.tsx
Normal file
25
src/components/site/TechChip.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
type Accent = "secondary" | "tertiary" | "primary";
|
||||
|
||||
interface TechChipProps {
|
||||
children: ReactNode;
|
||||
accent?: Accent;
|
||||
className?: string;
|
||||
}
|
||||
|
||||
const accentClasses: Record<Accent, string> = {
|
||||
primary: "text-primary",
|
||||
secondary: "text-secondary",
|
||||
tertiary: "text-tertiary",
|
||||
};
|
||||
|
||||
export function TechChip({ children, accent = "secondary", className = "" }: TechChipProps) {
|
||||
return (
|
||||
<span
|
||||
className={`inline-flex items-center rounded-sm bg-surface-container-highest px-2.5 py-1 label-sm ${accentClasses[accent]} ${className}`}
|
||||
>
|
||||
{children}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user