Download index.html from iShares/test-apps: direct link, hf CLI and curl.
- Browser
- Download file 40.2 kB
-
https://huggingface.co/spaces/iShares/test-apps/resolve/main/index.html
- Command line
-
hf download hf://spaces/iShares/test-apps/index.html
-
curl -L -o index.html https://huggingface.co/spaces/iShares/test-apps/resolve/main/index.html
40.2 kB
| <html lang="fr"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Garage Deschamps Automobiles - Vente de véhicules</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <style> | |
| /* Animation pour le chargement */ | |
| @keyframes fadeIn { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .fade-in { | |
| animation: fadeIn 0.5s ease-out forwards; | |
| } | |
| /* Style personnalisé pour les cartes */ | |
| .vehicle-card { | |
| transition: all 0.3s ease; | |
| } | |
| .vehicle-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 10px 20px rgba(0,0,0,0.1); | |
| } | |
| /* Style pour la navbar fixe */ | |
| .bottom-navbar { | |
| box-shadow: 0 -2px 10px rgba(0,0,0,0.1); | |
| } | |
| /* Animation pour la barre de recherche */ | |
| @keyframes slideDown { | |
| from { opacity: 0; transform: translateY(-20px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| .search-bar { | |
| animation: slideDown 0.3s ease-out forwards; | |
| } | |
| /* Style pour le modal */ | |
| .modal { | |
| transition: all 0.3s ease; | |
| } | |
| .modal-hidden { | |
| opacity: 0; | |
| visibility: hidden; | |
| transform: translateY(20px); | |
| } | |
| .modal-visible { | |
| opacity: 1; | |
| visibility: visible; | |
| transform: translateY(0); | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50 font-sans"> | |
| <!-- Container principal --> | |
| <div class="max-w-md mx-auto bg-white min-h-screen relative pb-16"> | |
| <!-- Header --> | |
| <header class="bg-blue-600 text-white p-4 shadow-md"> | |
| <div class="flex justify-between items-center"> | |
| <div class="flex items-center space-x-2"> | |
| <i class="fas fa-car text-2xl"></i> | |
| <h1 class="text-xl font-bold">Garage Deschamps Automobiles</h1> | |
| </div> | |
| <div class="flex space-x-4"> | |
| <button class="relative"> | |
| <i class="fas fa-bell text-xl"></i> | |
| <span class="absolute -top-1 -right-1 bg-red-500 text-white text-xs rounded-full h-4 w-4 flex items-center justify-center">3</span> | |
| </button> | |
| <button id="search-button"> | |
| <i class="fas fa-search text-xl"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Barre de recherche (cachée par défaut) --> | |
| <div id="search-bar" class="hidden search-bar mt-3"> | |
| <div class="relative"> | |
| <input type="text" placeholder="Rechercher un véhicule..." class="w-full py-2 px-4 pr-10 rounded-full text-gray-800 focus:outline-none"> | |
| <button class="absolute right-3 top-2 text-gray-500"> | |
| <i class="fas fa-search"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </header> | |
| <!-- Contenu principal (changé dynamiquement) --> | |
| <main id="app-content" class="p-4"> | |
| <!-- Page d'accueil par défaut --> | |
| <div id="home-page"> | |
| <!-- Bannière promotionnelle --> | |
| <div class="bg-gradient-to-r from-blue-500 to-blue-600 rounded-xl p-4 text-white mb-6 fade-in"> | |
| <h2 class="text-xl font-bold mb-2">Promotions de la semaine</h2> | |
| <p class="text-sm mb-3">Jusqu'à -33% sur les véhicules neufs</p> | |
| <button class="bg-white text-blue-600 px-4 py-1 rounded-full text-sm font-semibold">Voir toutes nos offres</button> | |
| </div> | |
| <!-- Catégories --> | |
| <h2 class="text-lg font-semibold mb-3">Catégories</h2> | |
| <div class="grid grid-cols-2 gap-3 mb-6"> | |
| <div class="bg-gray-100 p-4 rounded-lg text-center fade-in" style="animation-delay: 0.1s;"> | |
| <i class="fas fa-car text-3xl text-yellow-500 mb-2"></i> | |
| <p class="font-medium">Neuf</p> | |
| </div> | |
| <div class="bg-gray-100 p-4 rounded-lg text-center fade-in" style="animation-delay: 0.2s;"> | |
| <i class="fas fa-car-side text-3xl text-green-500 mb-2"></i> | |
| <p class="font-medium">Occasion</p> | |
| </div> | |
| </div> | |
| <!-- Véhicules récents --> | |
| <h2 class="text-lg font-semibold mb-3">Nos meilleures offres</h2> | |
| <div class="space-y-4"> | |
| <!-- Véhicule 1 --> | |
| <div class="vehicle-card bg-white rounded-xl overflow-hidden shadow-md fade-in" style="animation-delay: 0.1s;" onclick="showVehicleDetails(1)"> | |
| <div class="relative"> | |
| <img src="https://images.unsplash.com/photo-1494976388531-d1058494cdd8?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Voiture" class="w-full h-40 object-cover"> | |
| <span class="absolute top-2 left-2 bg-blue-500 text-white text-xs px-2 py-1 rounded-full">Neuf</span> | |
| <span class="absolute top-2 right-2 bg-red-500 text-white text-xs px-2 py-1 rounded-full">-15%</span> | |
| </div> | |
| <div class="p-3"> | |
| <h3 class="font-bold">Peugeot 208</h3> | |
| <div class="flex justify-between items-center mt-2"> | |
| <div> | |
| <p class="text-gray-600 text-sm"><i class="fas fa-gas-pump mr-1"></i> Essence</p> | |
| <p class="text-gray-600 text-sm"><i class="fas fa-tachometer-alt mr-1"></i> 16 845 km</p> | |
| </div> | |
| <p class="text-lg font-bold text-blue-600">18 990 €</p> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Véhicule 2 --> | |
| <div class="vehicle-card bg-white rounded-xl overflow-hidden shadow-md fade-in" style="animation-delay: 0.2s;" onclick="showVehicleDetails(2)"> | |
| <div class="relative"> | |
| <img src="https://images.unsplash.com/photo-1503376780353-7e6692767b70?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1170&q=80" alt="Voiture" class="w-full h-40 object-cover"> | |
| <span class="absolute top-2 left-2 bg-green-500 text-white text-xs px-2 py-1 rounded-full">Occasion</span> | |
| </div> | |
| <div class="p-3"> | |
| <h3 class="font-bold">Audi A5 Sportback</h3> | |
| <div class="flex justify-between items-center mt-2"> | |
| <div> | |
| <p class="text-gray-600 text-sm"><i class="fas fa-gas-pump mr-1"></i> Diesel</p> | |
| <p class="text-gray-600 text-sm"><i class="fas fa-tachometer-alt mr-1"></i> 45 000 km</p> | |
| </div> | |
| <p class="text-lg font-bold text-blue-600">32 500 €</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Page de liste des véhicules (cachée par défaut) --> | |
| <div id="vehicles-page" class="hidden"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-bold">Nos véhicules</h2> | |
| <div class="flex space-x-2"> | |
| <button class="bg-gray-200 p-2 rounded-lg"> | |
| <i class="fas fa-sliders-h"></i> | |
| </button> | |
| <button class="bg-gray-200 p-2 rounded-lg"> | |
| <i class="fas fa-map-marker-alt"></i> | |
| </button> | |
| </div> | |
| </div> | |
| <div class="mb-4"> | |
| <div class="flex overflow-x-auto space-x-2 pb-2"> | |
| <button class="bg-blue-600 text-white px-4 py-1 rounded-full text-sm whitespace-nowrap">Tous</button> | |
| <button class="bg-gray-200 px-4 py-1 rounded-full text-sm whitespace-nowrap">Neuf</button> | |
| <button class="bg-gray-200 px-4 py-1 rounded-full text-sm whitespace-nowrap">Occasion</button> | |
| <button class="bg-gray-200 px-4 py-1 rounded-full text-sm whitespace-nowrap">Petit budget</button> | |
| <button class="bg-gray-200 px-4 py-1 rounded-full text-sm whitespace-nowrap">Familiale</button> | |
| </div> | |
| </div> | |
| <div class="space-y-4" id="vehicles-list"> | |
| <!-- Les véhicules seront chargés ici via JavaScript --> | |
| </div> | |
| </div> | |
| <!-- Page de détails d'un véhicule (cachée par défaut) --> | |
| <div id="vehicle-details-page" class="hidden"> | |
| <!-- Le contenu sera chargé dynamiquement via JavaScript --> | |
| </div> | |
| <!-- Page favoris (cachée par défaut) --> | |
| <div id="favorites-page" class="hidden"> | |
| <h2 class="text-xl font-bold mb-4">Vos coup de coeur</h2> | |
| <div class="text-center py-10"> | |
| <i class="fas fa-heart text-4xl text-pink-200 mb-2"></i> | |
| <p class="text-gray-500">Vous n'avez pas encore trouvé le coup de coeur</p> | |
| <button class="mt-4 bg-blue-600 text-white px-6 py-2 rounded-full">Parcourir les véhicules</button> | |
| </div> | |
| </div> | |
| <!-- Page compte (cachée par défaut) --> | |
| <div id="account-page" class="hidden"> | |
| <div class="flex items-center space-x-4 mb-6"> | |
| <div class="h-16 w-16 bg-blue-100 rounded-full flex items-center justify-center"> | |
| <i class="fas fa-user text-2xl text-blue-600"></i> | |
| </div> | |
| <div> | |
| <h2 class="font-bold">Jean Dupont</h2> | |
| <p class="text-gray-600 text-sm">Membre depuis 2022</p> | |
| </div> | |
| </div> | |
| <div class="space-y-4"> | |
| <div class="bg-gray-100 p-4 rounded-lg"> | |
| <h3 class="font-semibold mb-2">Mes informations</h3> | |
| <p class="text-sm text-gray-600"><i class="fas fa-envelope mr-2"></i> jean.dupont@example.com</p> | |
| <p class="text-sm text-gray-600 mt-1"><i class="fas fa-phone mr-2"></i> +33 6 12 34 56 78</p> | |
| </div> | |
| <div class="bg-gray-100 p-4 rounded-lg"> | |
| <h3 class="font-semibold mb-2">Préférences</h3> | |
| <p class="text-sm text-gray-600"><i class="fas fa-bell mr-2"></i> Notifications activées</p> | |
| <p class="text-sm text-gray-600 mt-1"><i class="fas fa-moon mr-2"></i> Mode sombre</p> | |
| </div> | |
| <button onclick="showAddVehicleModal()" class="w-full bg-blue-100 text-blue-600 p-3 rounded-lg font-medium"> | |
| <i class="fas fa-plus-circle mr-2"></i> Ajouter un véhicule | |
| </button> | |
| <button class="w-full bg-red-100 text-red-600 p-3 rounded-lg font-medium"> | |
| <i class="fas fa-sign-out-alt mr-2"></i> Déconnexion | |
| </button> | |
| </div> | |
| </div> | |
| </main> | |
| <!-- Navigation inférieure --> | |
| <nav class="bottom-navbar fixed bottom-0 left-0 right-0 bg-white border-t border-gray-200 max-w-md mx-auto"> | |
| <div class="flex justify-around"> | |
| <button class="p-4 text-blue-600" onclick="showPage('home-page')"> | |
| <i class="fas fa-home text-xl"></i> | |
| </button> | |
| <button class="p-4 text-gray-500" onclick="showPage('vehicles-page'); loadVehicles()"> | |
| <i class="fas fa-car text-xl"></i> | |
| </button> | |
| <button class="p-4 text-gray-500" onclick="showPage('favorites-page')"> | |
| <i class="fas fa-heart text-xl"></i> | |
| </button> | |
| <button class="p-4 text-gray-500" onclick="showPage('account-page')"> | |
| <i class="fas fa-user text-xl"></i> | |
| </button> | |
| </div> | |
| </nav> | |
| <!-- Modal pour ajouter un véhicule --> | |
| <div id="add-vehicle-modal" class="modal modal-hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50"> | |
| <div class="bg-white rounded-xl w-full max-w-md max-h-[90vh] overflow-y-auto"> | |
| <div class="p-4 border-b border-gray-200 flex justify-between items-center"> | |
| <h3 class="text-lg font-semibold">Ajouter un véhicule</h3> | |
| <button onclick="hideAddVehicleModal()" class="text-gray-500"> | |
| <i class="fas fa-times"></i> | |
| </button> | |
| </div> | |
| <div class="p-4"> | |
| <form id="add-vehicle-form" onsubmit="addVehicle(event)"> | |
| <div class="space-y-4"> | |
| <!-- Type de véhicule --> | |
| <div> | |
| <label class="block text-sm font-medium text-gray-700 mb-1">Type de véhicule</label> | |
| <div class="flex space-x-2"> | |
| <label class="flex-1"> | |
| <input type="radio" name="type" value="Neuf" class="sr-only peer" checked> | |
| <div class="p-3 border border-gray-300 rounded-lg text-center peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-600"> | |
| <i class="fas fa-car text-xl mb-1"></i> | |
| <p>Neuf</p> | |
| </div> | |
| </label> | |
| <label class="flex-1"> | |
| <input type="radio" name="type" value="Occasion" class="sr-only peer"> | |
| <div class="p-3 border border-gray-300 rounded-lg text-center peer-checked:border-blue-500 peer-checked:bg-blue-50 peer-checked:text-blue-600"> | |
| <i class="fas fa-car-side text-xl mb-1"></i> | |
| <p>Occasion</p> | |
| </div> | |
| </label> | |
| </div> | |
| </div> | |
| <!-- Marque et modèle --> | |
| <div class="grid grid-cols-2 gap-4"> | |
| <div> | |
| <label for="brand" class="block text-sm font-medium text-gray-700 mb-1">Marque</label> | |
| <input type="text" id="brand" name="brand" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| </div> | |
| <div> | |
| <label for="model" class="block text-sm font-medium text-gray-700 mb-1">Modèle</label> | |
| <input type="text" id="model" name="model" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| </div> | |
| </div> | |
| <!-- Année et kilométrage --> | |
| <div class="grid grid-cols-2 gap-4"> | |
| <div> | |
| <label for="year" class="block text-sm font-medium text-gray-700 mb-1">Année</label> | |
| <input type="number" id="year" name="year" min="1900" max="2023" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| </div> | |
| <div> | |
| <label for="km" class="block text-sm font-medium text-gray-700 mb-1">Kilométrage</label> | |
| <input type="number" id="km" name="km" min="0" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| </div> | |
| </div> | |
| <!-- Carburant et prix --> | |
| <div class="grid grid-cols-2 gap-4"> | |
| <div> | |
| <label for="fuel" class="block text-sm font-medium text-gray-700 mb-1">Carburant</label> | |
| <select id="fuel" name="fuel" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| <option value="Essence">Essence</option> | |
| <option value="Diesel">Diesel</option> | |
| <option value="Hybride">Hybride</option> | |
| <option value="Électrique">Électrique</option> | |
| </select> | |
| </div> | |
| <div> | |
| <label for="price" class="block text-sm font-medium text-gray-700 mb-1">Prix (€)</label> | |
| <input type="number" id="price" name="price" min="0" required class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| </div> | |
| </div> | |
| <!-- Description --> | |
| <div> | |
| <label for="description" class="block text-sm font-medium text-gray-700 mb-1">Description</label> | |
| <textarea id="description" name="description" rows="3" class="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"></textarea> | |
| </div> | |
| <!-- Photos --> | |
| <div> | |
| <label class="block text-sm font-medium text-gray-700 mb-1">Photos du véhicule</label> | |
| <div class="border-2 border-dashed border-gray-300 rounded-lg p-4 text-center"> | |
| <i class="fas fa-camera text-3xl text-gray-400 mb-2"></i> | |
| <p class="text-sm text-gray-500">Glissez-déposez vos photos ici ou cliquez pour sélectionner</p> | |
| <input type="file" id="photos" name="photos" multiple accept="image/*" class="hidden"> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="mt-6 flex space-x-3"> | |
| <button type="button" onclick="hideAddVehicleModal()" class="flex-1 bg-gray-200 text-gray-800 py-2 px-4 rounded-md font-medium"> | |
| Annuler | |
| </button> | |
| <button type="submit" class="flex-1 bg-blue-600 text-white py-2 px-4 rounded-md font-medium"> | |
| Ajouter le véhicule | |
| </button> | |
| </div> | |
| </form> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Notification de succès --> | |
| <div id="success-notification" class="fixed top-4 right-4 bg-green-500 text-white px-4 py-2 rounded-lg shadow-lg hidden z-50"> | |
| <div class="flex items-center"> | |
| <i class="fas fa-check-circle mr-2"></i> | |
| <span>Véhicule ajouté avec succès!</span> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| </script> | |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=iShares/test-apps" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |