/* ============================================================
Guero's Group — Brand marks + Sahel-inspired generated art
============================================================ */
/* ---------- Sahel scene palette ---------- */
let __ssid = 0;
const SAHEL_TONES = {
dawn: { s0: "#F8E8C6", s1: "#ECB877", sun: "#F0A24E", d: ["#E7C78D", "#D7AD6A", "#C0934F"], sil: "#5A4632", grd: "#CCA063" },
day: { s0: "#E9ECE2", s1: "#EAD8AE", sun: "#F4E6B6", d: ["#E3C78C", "#D1A967", "#BA8F4F"], sil: "#5A4632", grd: "#CB9C60" },
dusk: { s0: "#F4D2A0", s1: "#C75E2C", sun: "#EA7A38", d: ["#CA8B53", "#B1713D", "#8F5A2F"], sil: "#3A2C1E", grd: "#9F6F3D" },
};
function rng(seed) { let s = seed * 9301 + 49297; return () => { s = (s * 9301 + 49297) % 233280; return s / 233280; }; }
/* Flat-topped acacia silhouette */
function Acacia({ x, y, s, fill }) {
return (
);
}
/* Vehicle side silhouettes (approx) */
function VehicleSil({ type, color }) {
const v = {
sedan: "M30 52 Q34 40 46 38 L70 24 Q80 18 96 18 L150 18 Q170 18 184 30 L214 38 Q230 42 234 52 Z",
suv: "M28 54 L32 36 Q34 26 50 24 L70 22 Q78 14 100 14 L160 14 Q182 14 190 26 L214 34 Q232 38 236 54 Z",
van: "M26 56 L28 24 Q30 14 48 13 L186 13 Q210 13 214 30 L232 40 Q238 46 238 56 Z",
pickup: "M22 54 L26 34 Q28 24 44 22 L74 22 Q82 14 104 14 L138 14 Q150 14 152 24 L152 42 L238 42 L238 54 Z",
truck: "M20 56 L22 22 Q24 14 40 14 L96 14 L100 40 L150 40 L160 22 Q164 16 182 16 L214 16 Q236 18 238 40 L238 56 Z",
}[type] || "M30 52 Q34 40 46 38 L70 24 Q80 18 96 18 L150 18 Q170 18 184 30 L214 38 Q230 42 234 52 Z";
return (
);
}
/* Minaret + low-rise Niamey skyline */
function Skyline({ color }) {
return (
{/* minaret */}
);
}
function SahelScene({ variant = "dunes", seed = 1, subject = null, style, className = "" }) {
const id = useRef("ss" + (++__ssid)).current;
const r = rng(seed + 1);
const toneKey = ["dawn", "day", "dusk"][Math.floor(r() * 3)];
const p = SAHEL_TONES[toneKey];
const sunX = 60 + Math.floor(r() * 280);
const showSky = true;
return (
);
}
/* ---------- Part tile (warm gradient + category icon) ---------- */
function PartTile({ icon = "box", seed = 1, style, className = "" }) {
const id = useRef("pt" + (++__ssid)).current;
const tones = [["#F0D9B8", "#E0A86A"], ["#EAD3AE", "#D69256"], ["#EFC9A0", "#D98A52"], ["#E8D2B0", "#CDA063"]];
const c = tones[seed % tones.length];
return (
);
}
Object.assign(window, { SahelScene, PartTile, VehicleSil });