// Medway MSS — brand primitives. Logo recreates the actual wordmark:
// "medway" in lowercase rounded weight green + tagline "MEDICAL SOLUTIONS AND SUPPLY"
function MedwayWordmark({ height = 28, color, accent, light = false }) {
// Real logo: lowercase "medway" rounded, green; the 'y' descender is exaggerated.
// Tagline beneath in spaced caps. We recreate the spirit: lowercase rounded sans,
// with a styled 'y' tail, plus the tagline.
const green = accent || '#1ea34d';
const inkColor = color || (light ? '#fafafa' : '#171717');
// We scale to "logo unit" = height; tagline below
const wordSize = height * 1.05;
const tagSize = height * 0.34;
return (
medwa
y
Medical Solutions and Supply
);
}
// Compact lockup for tight nav contexts — just the wordmark, no tagline
function MedwayMark({ height = 22, color, accent }) {
const green = accent || '#1ea34d';
return (
medway
);
}
// Numeric label, tabular figures
function Num({ children, size = 12 }) {
return (
{children}
);
}
// Small uppercase eyebrow with optional dot
function Eyebrow({ children, accent, color }) {
return (
{accent !== false && (
)}
{children}
);
}
function Rule({ color, style = {} }) {
return ;
}
function I({ name, size = 18, stroke = 1.5, color = 'currentColor', style = {} }) {
const ref = React.useRef(null);
React.useEffect(() => {
if (ref.current && window.lucide) {
ref.current.innerHTML = '';
const i = document.createElement('i');
i.setAttribute('data-lucide', name);
ref.current.appendChild(i);
window.lucide.createIcons({
attrs: { width: size, height: size, stroke: color, 'stroke-width': stroke },
});
}
}, [name, size, stroke, color]);
return ;
}
// Language switcher — three small text buttons
function LangSwitcher({ lang, onChange, light = false }) {
return (
{window.MEDWAY_LANGS.map((l) => {
const isActive = lang === l.code;
return (
);
})}
);
}
// Mobile detection — single source of truth used by every section.
// Returns true when the viewport is narrower than `breakpoint` (default 760px).
function useIsMobile(breakpoint = 760) {
const get = () => typeof window !== 'undefined' && window.innerWidth < breakpoint;
const [m, setM] = React.useState(get);
React.useEffect(() => {
const on = () => setM(get());
window.addEventListener('resize', on);
return () => window.removeEventListener('resize', on);
}, []);
return m;
}
Object.assign(window, { MedwayWordmark, MedwayMark, Num, Eyebrow, Rule, I, LangSwitcher, useIsMobile });