// ============================================================
// 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 (
{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
});