// ============================================================ // OneAeye Brand Hub — site-shell.jsx // Shared across every page: nav, footer, the mark, and reusable // surface frames. Load AFTER React, before each page script. // ============================================================ const FACTS = { legal: "OneAeye Solutions Private Limited", short: "OneAeye", city: "Kanpur, Uttar Pradesh", web: "oneaeye.com", email: "hello@oneaeye.com", founder: "Vikas Agrahari", role: "Founder & Director", tagline: "One platform. Every workflow.", founded: "2026", client: "K Care Hospital, Kanpur", handle: "@oneaeye", }; const NAV = [ { label: "Home", href: "index.html" }, { label: "Identity", href: "identity.html" }, { label: "Modules", href: "modules.html" }, { label: "Stationery", href: "stationery.html" }, { label: "Social", href: "social.html" }, { label: "Promotion", href: "promotion.html" }, ]; // ---- THE MARK ------------------------------------------------ function Tile({ size = 80, radius, bg = "var(--ink)", fg = "var(--paper)", style }) { return ( 1Ai ); } function Wordmark({ size = 40, color = "var(--ink)", weight = 500, style }) { return oneaeye; } function Lockup({ tile = 44, word = 34, gap = 12, color = "var(--ink)", tileBg, tileFg, style }) { return ( ); } // ---- NAV ----------------------------------------------------- function Nav({ current }) { return ( ); } // ---- FOOTER -------------------------------------------------- function Footer() { return ( ); } // ---- SECTION HELPERS ---------------------------------------- function Eyebrow({ children }) { return
{children}
; } function Section({ id, eyebrow, title, lede, dark, tight, children, headStyle }) { return (
{(eyebrow || title || lede) && (
{eyebrow && {eyebrow}} {title &&

{title}

} {lede &&

{lede}

}
)} {children}
); } function Plate({ label, ink, paper, style, children }) { return (
{label && {label}} {children}
); } // ---- copy-to-clipboard swatch ------------------------------- function Swatch({ name, hex, role, bg, fg }) { const [copied, setCopied] = React.useState(false); const copy = () => { navigator.clipboard?.writeText(hex).then(() => { setCopied(true); setTimeout(() => setCopied(false), 1200); }).catch(() => {}); }; return (
{name}
{hex}
{copied ? "copied ✓" : "click to copy"}
{role &&
{role}
}
); } // ---- reusable post templates (used by social + promotion) --- // All monochrome, on-brand. `variant` switches layout. function PostCard({ variant = "tagline", w = 320, data = {}, rounded = true }) { const base = { width: w, height: w, position: "relative", overflow: "hidden", borderRadius: rounded ? 16 : 0, }; const pad = Math.round(w * 0.09); if (variant === "tagline") { return (
One platform.
Every workflow.
oneaeye.com · {FACTS.handle}
); } if (variant === "module") { return (
Now live
{data.code || "HRMS"}
{data.title || "Attendance, payroll, biometric sync."}
{data.foot || "Live in days · oneaeye.com"}
); } if (variant === "quote") { return (
{data.tag || "Client"}
{data.quote || "Running four modules live."}
{data.who || FACTS.client}
); } if (variant === "stat") { return (
{data.tag || "Shipped"}
{data.big || "4"}
{data.small || "live modules"}
{data.foot || "in four months"}
); } return null; } Object.assign(window, { FACTS, NAV, Tile, Wordmark, Lockup, Nav, Footer, Eyebrow, Section, Plate, Swatch, PostCard });