42a1ab54f1
Fichiers mis en production: - ✅ CSS modulaire (900+ lignes) - architecture 9 sections - ✅ JavaScript moderne (600+ lignes) - state management complet - ✅ Sauvegardes des fichiers originaux (.backup) - ✅ Script de démarrage optimisé (START_WEB_OPTIMIZED.sh) - ✅ Documentation déploiement (PRODUCTION_READY.md) Changements CSS: - 🏗️ Architecture modulaire avec CSS Variables - ⚡ Animations GPU-optimisées (transform/opacity) - ♿ prefers-reduced-motion implémenté - 🎯 Focus visible pour accessibilité - 📱 Responsive mobile-first - 🎨 Design System V2 complet Nouvelles fonctionnalités JS: - 📦 State management centralisé (AppState) - 🔐 Auth complète (login, register, logout) - 🎵 Player controls: 8 boutons actifs - 🍞 Toast notifications système - ⌨️ Keyboard shortcuts (8 raccourcis) - 📊 API intégrée (playlists, tracks) - 🧭 Navigation SPA fluide - 📱 Menu mobile responsive Scripts: - START_WEB_OPTIMIZED.sh - Script de démarrage optimisé Documentation: - PRODUCTION_READY.md - Guide complet de déploiement - Instructions de démarrage - Raccourcis clavier documentés - Résolution de problèmes Accessibilité: - Focus states visibles - Reduced motion support - Touch targets 44x44px - Contrast 4.5:1 minimum Performance: - Transform/opacity animations - DOM elements cached - Event delegation - GPU accelerated Generated with [Claude Code](https://claude.com/claude-code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
68 lines
1.8 KiB
HTML
68 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<base href="/">
|
|
<meta charset="UTF-8">
|
|
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
|
|
<meta name="description" content="A new Flutter project.">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<meta name="apple-mobile-web-app-title" content="spotify_le_2">
|
|
<link rel="apple-touch-icon" href="icons/Icon-192.png">
|
|
<link rel="icon" type="image/png" href="favicon.png"/>
|
|
<title>spotify_le_2</title>
|
|
<link rel="manifest" href="manifest.json">
|
|
<style>
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
background: #0A0E27;
|
|
}
|
|
#loading {
|
|
position: fixed;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
color: #00F0FF;
|
|
font-family: system-ui, -apple-system, sans-serif;
|
|
font-size: 24px;
|
|
text-align: center;
|
|
}
|
|
.spinner {
|
|
border: 4px solid rgba(0, 240, 255, 0.2);
|
|
border-top: 4px solid #00F0FF;
|
|
border-radius: 50%;
|
|
width: 50px;
|
|
height: 50px;
|
|
animation: spin 1s linear infinite;
|
|
margin: 20px auto;
|
|
}
|
|
@keyframes spin {
|
|
0% { transform: rotate(0deg); }
|
|
100% { transform: rotate(360deg); }
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="loading">
|
|
<div class="spinner"></div>
|
|
<div>Chargement de AudiOhm...</div>
|
|
</div>
|
|
<script>
|
|
window.addEventListener('load', function(ev) {
|
|
_flutter.loader.loadEntrypoint({
|
|
entrypointUrl: "main.dart.js",
|
|
onEntrypointLoaded: function(engineInitializer) {
|
|
engineInitializer.initializeEngine({
|
|
hostElement: document.body,
|
|
assetBase: "/",
|
|
}).then(function(appRunner) {
|
|
appRunner.runApp();
|
|
});
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|