/** * The SchoolCompare mark. * * Five bars: a cohort, with one school picked out. It is the same object as * the distribution strip inside a school row, at a different size — the logo * teaches the chart and the chart reinforces the logo. * * Built from opacity steps over `currentColor` rather than fixed greys, so it * inverts cleanly on any ground without a second artwork. The highlighted bar * is the only element that takes the brand hue. * * This is the single source for the mark. The favicon and the generated icons * derive from the same geometry (see BARS) — previously the header and the * favicon had drifted into two different logos. */ /** x, y, width, height, and whether this bar is the highlighted school. */ export const BARS: ReadonlyArray<[number, number, number, number, boolean]> = [ [2, 26, 6, 12, false], [10, 16, 6, 22, false], [18, 8, 6, 30, false], [26, 14, 6, 24, true], [34, 28, 4, 10, false], ]; const COHORT_OPACITY = [0.22, 0.38, 0.55, 1, 0.22]; interface LogoMarkProps { className?: string; /** Rendered size in px. Defaults to inheriting via CSS. */ size?: number; /** Colour of the highlighted bar. Defaults to the brand token. */ accent?: string; title?: string; } export function LogoMark({ className, size, accent = 'var(--brand)', title }: LogoMarkProps) { return ( {title ? {title} : null} {BARS.map(([x, y, w, h, isSchool], i) => ( ))} ); }