/* Rootina Nutri — shared site chrome: Nav, Footer, Icon set, layout helpers. Loaded on every page before the page's own script. Exports to window. */ const { Button: RNButton } = window.RootinaNutriDesignSystem_7af00c; const DS = "_ds/rootina-nutri-design-system-7af00c5e-b44e-4355-8863-4c0008e4fc46"; /* ---------------------------------------------------------------- icons */ const ICONS = { leaf: 'M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z|M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12', sprout: 'M7 20h10|M10 20c5.5-2.5.8-6.4 3-10|M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z|M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z', factory: 'M2 20a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8l-7 5V8l-7 5V4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z|M17 18h1|M12 18h1|M7 18h1', shield: 'M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z|m9 12 2 2 4-4', truck: 'M14 18V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v11a1 1 0 0 0 1 1h2|M15 18H9|M19 18h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.624l-3.48-4.35A1 1 0 0 0 17.52 8H14|@circle 17 18 2|@circle 7 18 2', recycle: 'M7 19H4.815a1.83 1.83 0 0 1-1.57-.881 1.785 1.785 0 0 1-.004-1.784L7.196 9.5|M11 19h8.203a1.83 1.83 0 0 0 1.556-.89 1.784 1.784 0 0 0 0-1.775l-1.226-2.12|m14 16-3 3 3 3|M8.293 13.596 7.196 9.5 3.1 10.598|m9.344 5.811 1.093-1.892A1.83 1.83 0 0 1 11.985 3a1.784 1.784 0 0 1 1.546.888l3.943 6.843|m13.378 9.633 4.096 1.098 1.097-4.096', globe: '@circle 12 12 10|M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20|M2 12h20', award: 'm15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526|@circle 12 8 6', flask: 'M10 2v7.31|M14 9.3V1.99|M8.5 2h7|M14 9.3a6.5 6.5 0 1 1-4 0|M5.58 16.5h12.85', users: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2|@circle 9 7 4|M22 21v-2a4 4 0 0 0-3-3.87|M16 3.13a4 4 0 0 1 0 7.75', package: 'M16.5 9.4 7.5 4.21|M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z|M3.29 7 12 12l8.71-5|M12 22V12', store: 'm2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7|M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8|M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4|M2 7h20', utensils: 'M3 2v7c0 1.1.9 2 2 2a2 2 0 0 0 2-2V2|M5 2v20|M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7', building: 'M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z|M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2|M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2|M10 6h4|M10 10h4|M10 14h4', droplet: 'M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z', micro: 'M6 18h8|M3 22h18|M14 22a7 7 0 1 0 0-14h-1|M9 14h2|M9 12a2 2 0 0 1-2-2V6h6v4a2 2 0 0 1-2 2Z|M12 6V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3', target: '@circle 12 12 10|@circle 12 12 6|@circle 12 12 2', layers: 'm12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z|m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65|m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65', warehouse: 'M22 8.35V20a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V8.35A2 2 0 0 1 3.26 6.5l8-3.2a2 2 0 0 1 1.48 0l8 3.2A2 2 0 0 1 22 8.35Z|M6 18h12|M6 14h12|M6 10h12', phone: 'M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z', mail: '@rect 2 4 20 16 2|m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7', upload: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4|m17 8-5-5-5 5|M12 3v12', pin: 'M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0|@circle 12 10 3', send: 'M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z|m21.854 2.147-10.94 10.939', chevron: 'm6 9 6 6 6-6', arrow: 'M5 12h14|m12 5 7 7-7 7', arrowUp: 'M12 19V5|m5 12 7-7 7 7', handshake: 'm11 17 2 2a1 1 0 1 0 3-3|m14 14 2.5 2.5a1 1 0 1 0 3-3l-3.88-3.88a3 3 0 0 0-4.24 0l-.88.88a1 1 0 1 1-3-3l2.81-2.81a5.79 5.79 0 0 1 7.06-.87l.47.28a2 2 0 0 0 1.42.25L21 4|m21 3 1 11h-2|M3 3 2 14l6.5 6.5a1 1 0 1 0 3-3|M3 4h8', clock: '@circle 12 12 10|M12 6v6l4 2', check: 'M20 6 9 17l-5-5', badge: 'M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z|m9 12 2 2 4-4', route: '@circle 6 19 3|M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15|@circle 18 5 3', beaker: 'M4.5 3h15|M6 3v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V3|M6 14h12', sun: '@circle 12 12 4|M12 2v2|M12 20v2|m4.93 4.93 1.41 1.41|m17.66 17.66 1.41 1.41|M2 12h2|M20 12h2|m6.34 17.66-1.41 1.41|m19.07 4.93-1.41 1.41', thermometer: 'M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0Z', facebook: 'M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z', linkedin: 'M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-4 0v7h-4v-7a6 6 0 0 1 6-6z|@rect 2 9 4 12|@circle 4 4 0', instagram: '@rect 2 2 20 20 5|M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z|M17.5 6.5h.01', }; function Icon({ name, size = 24, stroke = 1.8, color = 'currentColor', style }) { const data = ICONS[name]; if (!data) return null; const parts = data.split('|'); return ( ); } /* ---------------------------------------------------------------- nav */ const NAV = [ { key: 'home', label: 'Home', href: 'index.html' }, { key: 'about', label: 'About Us', children: [ { key: 'company', label: 'The Company', sub: 'Story, vision & mission', href: 'about-company.html' }, { key: 'foundation', label: 'Our Foundation', sub: 'Purpose & values', href: 'about-foundation.html' }, ] }, { key: 'products', label: 'Products', href: 'products.html' }, { key: 'services', label: 'Services', href: 'services.html' }, { key: 'divisions', label: 'Distribution', href: 'divisions.html' }, ]; function Nav({ active, overlay }) { const [open, setOpen] = React.useState(false); const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { if (!overlay) return; const onScroll = () => setScrolled(window.scrollY > 40); onScroll(); window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, [overlay]); const isAbout = active === 'company' || active === 'foundation'; // overlay = transparent nav with white text, used over the home slideshow const onDark = overlay && !scrolled; const linkStyle = (on) => ({ fontSize: 15.5, fontWeight: on ? 700 : 500, cursor: 'pointer', color: onDark ? (on ? '#fff' : 'rgba(255,255,255,0.82)') : (on ? 'var(--color-root-green)' : 'var(--color-text)'), letterSpacing: 'var(--tracking-tight)', display: 'inline-flex', alignItems: 'center', gap: 5, padding: '6px 0', transition: 'color .15s ease', whiteSpace: 'nowrap', }); return (
RotinaNutri Contact us
{NAV.flatMap((item) => item.children ? item.children : [item]).map((l) => ( {l.label} ))} Contact us
); } /* ---------------------------------------------------------------- footer */ function Footer() { const cols = [ { h: 'Company', items: [['The Company', 'about-company.html'], ['Our Foundation', 'about-foundation.html'], ['Services', 'services.html'], ['Distribution', 'divisions.html']] }, { h: 'Products', items: [['Fruit powders', 'products.html'], ['Vegetable powders', 'products.html'], ['Smoothie mixes', 'products.html'], ['Full catalogue', 'products.html']] }, { h: 'Work with us', items: [['Become a distributor', 'contact.html'], ['Export partnerships', 'contact.html'], ['Bulk & private label', 'contact.html'], ['Contact us', 'contact.html']] }, ]; return ( ); } /* ---------------------------------------------------------------- helpers */ function Img({ id, h = 320, tone = '', shape = 'rounded', radius = 16, placeholder = 'Drop an image', style = {}, fit = 'cover' }) { return ( ); } function Eyebrow({ children, style }) { return
{children}
; } function SectionHead({ eyebrow, title, intro, center, light, max = 640 }) { const c = light ? '#fff' : 'var(--color-root-green)'; return (
{eyebrow &&
{eyebrow}
}

{title}

{!center &&
} {center &&
} {intro &&

{intro}

}
); } /* Interior page hero band */ function PageHero({ eyebrow, title, intro }) { return (
{eyebrow &&
{eyebrow}
}

{title}

{intro &&

{intro}

}
); } /* CTA band reused across pages */ function CTABand({ title, text, primary = ['Request a business inquiry', 'contact.html'], secondary }) { return (

{title}

{text &&

{text}

}
{primary[0]} {secondary && {secondary[0]}}
); } /* checkmark list item */ function CheckItem({ title, children }) { return (
  • {title &&
    {title}
    }
    {children}
  • ); } /* ---------------------------------------------------------------- reveal engine */ function initReveal() { const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (reduce) return; const io = new IntersectionObserver((entries) => { entries.forEach((e) => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } }); }, { threshold: 0.12, rootMargin: '0px 0px -8% 0px' }); const scan = () => document.querySelectorAll('.reveal:not(.in)').forEach((el) => io.observe(el)); scan(); const mo = new MutationObserver(scan); mo.observe(document.body, { childList: true, subtree: true }); // safety: reveal everything still hidden after 2.5s so nothing can stay // permanently invisible (long pages, automated captures, PDF export). setTimeout(() => document.querySelectorAll('.reveal:not(.in)').forEach((el) => el.classList.add('in')), 2500); } window.Chrome = { Nav, Footer, Icon, Img, Eyebrow, SectionHead, PageHero, CTABand, CheckItem, initReveal, DS };