#!/bin/bash
# MYP Platform - Kiosk CSS Build Script
# Optimiert und minifiziert CSS für maximale Performance im Offline-Kiosk-Modus
echo "🚀 Starte Kiosk CSS Build..."
# Erstelle Build-Verzeichnis
mkdir -p static/css/build
# Erstelle eine kombinierte CSS-Datei in korrekter Reihenfolge
echo "📦 Kombiniere CSS-Dateien..."
cat > static/css/build/kiosk-combined.css << 'EOF'
/* MYP Platform - Kiosk Optimierte CSS Bundle */
/* Generiert am: $(date) */
EOF
# CSS-Dateien in optimaler Reihenfolge kombinieren
cat static/css/kiosk-optimized.css >> static/css/build/kiosk-combined.css
echo "" >> static/css/build/kiosk-combined.css
cat static/css/icons-minimal.css >> static/css/build/kiosk-combined.css
# TailwindCSS mit aggressivem Purging bauen
echo "🎯 Purge TailwindCSS..."
npx tailwindcss -i static/css/input.css -o static/css/build/tailwind-purged.css --minify
# Kombiniere mit Tailwind
echo "" >> static/css/build/kiosk-combined.css
cat static/css/build/tailwind-purged.css >> static/css/build/kiosk-combined.css
# CSS minifizieren (falls cssnano verfügbar)
if command -v npx &> /dev/null; then
echo "🗜️ Minifiziere CSS..."
npx cssnano static/css/build/kiosk-combined.css static/css/build/kiosk-production.css --no-map
else
echo "⚠️ cssnano nicht verfügbar, verwende unminifizierte Version"
cp static/css/build/kiosk-combined.css static/css/build/kiosk-production.css
fi
# Erstelle kritisches CSS für Inline-Verwendung
echo "⚡ Erstelle kritisches CSS..."
cp static/css/critical-inline.css static/css/build/critical.css
# Erstelle eine Version ohne FontAwesome
echo "🚫 Entferne FontAwesome-Abhängigkeiten..."
grep -v "fontawesome" static/css/build/kiosk-production.css > static/css/build/kiosk-no-fa.css
# Dateigröße-Analyse
echo ""
echo "📊 Dateigröße-Analyse:"
echo "Critical CSS (inline): $(wc -c < static/css/build/critical.css) bytes"
echo "Kiosk Production CSS: $(wc -c < static/css/build/kiosk-production.css) bytes"
echo "Ohne FontAwesome: $(wc -c < static/css/build/kiosk-no-fa.css) bytes"
# Vergleich mit Original-Dateien
if [ -f "static/css/tailwind.min.css" ]; then
original_size=$(wc -c < static/css/tailwind.min.css)
optimized_size=$(wc -c < static/css/build/kiosk-production.css)
reduction=$((100 - (optimized_size * 100 / original_size)))
echo "TailwindCSS Original: $original_size bytes"
echo "Größenreduktion: $reduction%"
fi
# Cache-Busting Hash generieren
hash=$(sha256sum static/css/build/kiosk-production.css | cut -d' ' -f1 | cut -c1-8)
cp static/css/build/kiosk-production.css static/css/build/kiosk-$hash.css
echo ""
echo "✅ Build abgeschlossen!"
echo ""
echo "📁 Generierte Dateien:"
echo " • static/css/build/critical.css (inline verwenden)"
echo " • static/css/build/kiosk-production.css (Haupt-CSS)"
echo " • static/css/build/kiosk-$hash.css (mit Cache-Busting)"
echo ""
echo "🔧 HTML-Integration:"
echo ' '
echo ' '
echo ""
echo "💡 Für maximale Performance: Service Worker entfernen und nur statische CSS verwenden"
# Cleanup temporärer Dateien
rm -f static/css/build/kiosk-combined.css
rm -f static/css/build/tailwind-purged.css
echo "🧹 Cleanup abgeschlossen"