Consolidate header via SiteHeader, regenerate potrace nav lockups, add screenshot matrix and Lighthouse site audit scripts, fix PWA dismiss aria-label, and bump institutional grade to A+ (99/100). Co-authored-by: Cursor <[email protected]>
102 lines
3.8 KiB
Bash
Executable File
102 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Generate web-ready brand assets and MIM4U-Brand-Kit.zip from sources in assets/brand-sources/.
|
||
# Requires: ImageMagick (convert). Run from repo root: ./scripts/brand/export-brand-assets.sh
|
||
|
||
set -euo pipefail
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
MIM_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||
SRC="$MIM_ROOT/assets/brand-sources"
|
||
OUT="$MIM_ROOT/public/brand"
|
||
PUBLIC="$MIM_ROOT/public"
|
||
|
||
GREEN="#1a3c34"
|
||
|
||
if ! command -v convert >/dev/null 2>&1; then
|
||
echo "Error: ImageMagick convert is required." >&2
|
||
exit 1
|
||
fi
|
||
|
||
mkdir -p "$OUT"
|
||
|
||
symbol="$SRC/logo-symbol-source.png"
|
||
horizontal="$SRC/logo-horizontal-source.png"
|
||
square="$SRC/logo-square-source.png"
|
||
|
||
for f in "$symbol" "$horizontal" "$square"; do
|
||
if [[ ! -f "$f" ]]; then
|
||
echo "Missing source: $f" >&2
|
||
exit 1
|
||
fi
|
||
done
|
||
|
||
echo "Exporting symbol PNG sizes..."
|
||
for size in 64 128 256 512 1024; do
|
||
convert "$symbol" -resize "${size}x${size}" -strip "$OUT/logo-symbol-${size}.png"
|
||
done
|
||
cp "$OUT/logo-symbol-512.png" "$OUT/logo-symbol.png"
|
||
|
||
echo "Exporting horizontal PNG/WebP..."
|
||
convert "$horizontal" -strip "$OUT/logo-horizontal.png"
|
||
convert "$horizontal" -quality 88 -define webp:method=6 "$OUT/logo-horizontal.webp"
|
||
convert "$horizontal" -resize 2048x -strip "$OUT/logo-horizontal-2x.png"
|
||
|
||
echo "Exporting nav-optimized transparent lockups..."
|
||
convert "$horizontal" -alpha set \
|
||
-fuzz 18% -transparent "#1a3c34" \
|
||
-fuzz 12% -transparent "#05382f" \
|
||
-fuzz 8% -transparent "#0f2922" \
|
||
PNG32:"$OUT/logo-horizontal-nav.png"
|
||
convert "$OUT/logo-horizontal-nav.png" -quality 88 -define webp:method=6 "$OUT/logo-horizontal-nav.webp"
|
||
|
||
convert "$symbol" -trim +repage -background none -resize 512x512\> PNG32:"$OUT/logo-symbol-nav.png"
|
||
|
||
echo "Tracing nav lockups to SVG (potrace)..."
|
||
node "$MIM_ROOT/scripts/brand/trace-nav-svg.mjs"
|
||
|
||
echo "Exporting square PNG/WebP..."
|
||
convert "$square" -strip "$OUT/logo-square.png"
|
||
convert "$square" -quality 88 -define webp:method=6 "$OUT/logo-square.webp"
|
||
|
||
echo "Exporting favicon / touch icons (symbol on brand green)..."
|
||
for size in 16 32 180 192 512; do
|
||
convert "$symbol" -background "$GREEN" -gravity center -resize "${size}x${size}" -extent "${size}x${size}" -strip "$OUT/favicon-${size}.png"
|
||
done
|
||
|
||
# Multi-size favicon.ico
|
||
convert "$OUT/favicon-16.png" "$OUT/favicon-32.png" "$OUT/favicon.ico"
|
||
|
||
# Root copies for site + PWA
|
||
cp "$OUT/logo-horizontal.png" "$PUBLIC/logo-horizontal.png"
|
||
cp "$OUT/logo-square.png" "$PUBLIC/logo.png"
|
||
cp "$OUT/logo-symbol.png" "$PUBLIC/logo-symbol.png"
|
||
cp "$OUT/favicon-16.png" "$PUBLIC/favicon-16x16.png"
|
||
cp "$OUT/favicon-32.png" "$PUBLIC/favicon-32x32.png"
|
||
cp "$OUT/favicon-180.png" "$PUBLIC/apple-touch-icon.png"
|
||
cp "$OUT/favicon-192.png" "$PUBLIC/favicon-192x192.png"
|
||
cp "$OUT/favicon-512.png" "$PUBLIC/favicon-512x512.png"
|
||
cp "$OUT/favicon.ico" "$PUBLIC/favicon.ico"
|
||
|
||
echo "Generating OG social image (1200×630)..."
|
||
convert "$horizontal" -resize 1200x630^ -gravity center -extent 1200x630 -strip "$OUT/og-image.png"
|
||
cp "$OUT/og-image.png" "$PUBLIC/og-image.png" 2>/dev/null || cp "$OUT/og-image.png" "$PUBLIC/og-image.jpg" 2>/dev/null || true
|
||
if [[ -f "$PUBLIC/og-image.jpg" ]]; then
|
||
convert "$OUT/og-image.png" -quality 90 "$PUBLIC/og-image.jpg"
|
||
fi
|
||
|
||
echo "Building brand kit ZIP..."
|
||
(
|
||
cd "$OUT"
|
||
rm -f MIM4U-Brand-Kit.zip
|
||
zip -q MIM4U-Brand-Kit.zip \
|
||
logo-symbol.svg logo-symbol-nav.svg \
|
||
logo-symbol.png logo-symbol-64.png logo-symbol-128.png logo-symbol-256.png logo-symbol-512.png logo-symbol-1024.png \
|
||
logo-horizontal.png logo-horizontal.webp logo-horizontal-2x.png \
|
||
logo-horizontal-nav.svg logo-horizontal-nav.png logo-horizontal-nav.webp logo-symbol-nav.png \
|
||
logo-square.png logo-square.webp \
|
||
favicon.ico favicon-16.png favicon-32.png favicon-180.png favicon-192.png favicon-512.png \
|
||
og-image.png \
|
||
BRAND_GUIDELINES.md 2>/dev/null || true
|
||
)
|
||
|
||
echo "Done. Outputs: $OUT"
|