hyper-assistant-ia / index.html
docto41's picture
Add 2 files
dbecaaf verified
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MegaMarket IA - 985,896,100 Assistants IA</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>
:root {
--primary: #6366f1;
--secondary: #8b5cf6;
--accent: #ec4899;
}
body {
background: linear-gradient(135deg, #0f172a, #020617);
min-height: 100vh;
color: white;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.gradient-text {
background: linear-gradient(90deg, var(--primary), var(--secondary), var(--accent));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.gradient-border {
border: 2px solid transparent;
background: linear-gradient(#0f172a, #0f172a) padding-box,
linear-gradient(135deg, var(--primary), var(--secondary)) border-box;
}
.service-card {
transition: all 0.3s ease;
background: rgba(15, 23, 42, 0.7);
backdrop-filter: blur(10px);
}
.service-card:hover {
transform: translateY(-5px);
box-shadow: 0 10px 25px rgba(99, 102, 241, 0.3);
}
/* Virtual Scroll Styles */
.virtual-scroll-container {
height: 70vh;
overflow-y: auto;
position: relative;
}
.virtual-scroll-content {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
.ai-assistant-btn {
transition: all 0.2s ease;
}
.ai-assistant-btn:hover {
transform: scale(1.02);
box-shadow: 0 4px 12px rgba(99, 102, 241, 0.2);
}
/* Loading Animation */
@keyframes pulse {
0%, 100% { opacity: 0.6; }
50% { opacity: 1; }
}
.loading-pulse {
animation: pulse 1.5s infinite;
}
</style>
</head>
<body class="min-h-screen">
<!-- Main Content -->
<div id="main-content">
<!-- Header -->
<header class="gradient-border border-b">
<div class="container mx-auto px-4 py-6">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="flex items-center mb-4 md:mb-0">
<i class="fas fa-robot text-4xl mr-3 gradient-text"></i>
<h1 class="text-3xl font-bold gradient-text">MegaMarket IA</h1>
</div>
<div class="flex items-center space-x-4">
<div class="relative">
<input type="text" placeholder="Rechercher parmi 985,896,100 assistants IA..."
class="w-full bg-slate-800 rounded-full py-3 px-6 pr-12 text-white focus:outline-none focus:ring-2 focus:ring-indigo-500"
id="search-input">
<button class="absolute right-3 top-1/2 transform -translate-y-1/2 text-slate-400 hover:text-white">
<i class="fas fa-search"></i>
</button>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="container mx-auto px-4 py-8">
<!-- Stats -->
<div class="bg-slate-800 rounded-xl p-6 mb-8 gradient-border">
<div class="grid grid-cols-1 md:grid-cols-4 gap-4 text-center">
<div>
<div class="text-3xl font-bold gradient-text">985,896,100</div>
<div class="text-slate-400">Assistants IA</div>
</div>
<div>
<div class="text-3xl font-bold gradient-text">24/7</div>
<div class="text-slate-400">Disponibilité</div>
</div>
<div>
<div class="text-3xl font-bold gradient-text">100%</div>
<div class="text-slate-400">Fonctionnels</div>
</div>
<div>
<div class="text-3xl font-bold gradient-text">0.001s</div>
<div class="text-slate-400">Temps de réponse</div>
</div>
</div>
</div>
<!-- Category Filter -->
<div class="mb-8">
<h2 class="text-xl font-bold mb-4 gradient-text">Filtrer par catégorie</h2>
<div class="flex flex-wrap gap-2">
<button class="category-btn px-4 py-2 rounded-full bg-indigo-600 text-white" data-category="all">Tous</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="marketing">Marketing</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="dev">Développement</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="design">Design</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="writing">Rédaction</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="video">Vidéo</button>
<button class="category-btn px-4 py-2 rounded-full bg-slate-700 hover:bg-slate-600" data-category="audio">Audio</button>
</div>
</div>
<!-- AI Assistants Grid -->
<div class="mb-4 flex justify-between items-center">
<h2 class="text-xl font-bold gradient-text">Nos 985,896,100 Assistants IA</h2>
<div class="text-slate-400" id="visible-count">Affichage 1-50 sur 985,896,100</div>
</div>
<!-- Virtual Scroll Container -->
<div class="virtual-scroll-container gradient-border rounded-xl p-4 mb-8" id="assistants-container">
<div id="assistants-content" class="virtual-scroll-content">
<!-- Les boutons seront générés dynamiquement ici -->
</div>
</div>
<!-- Loading Indicator -->
<div id="loading-indicator" class="text-center py-8 loading-pulse">
<i class="fas fa-circle-notch fa-spin text-3xl gradient-text mr-2"></i>
<span class="text-lg">Chargement des assistants IA...</span>
</div>
</main>
</div>
<!-- AI Assistant Modal -->
<div id="assistant-modal" class="fixed inset-0 z-50 flex items-center justify-center hidden bg-black bg-opacity-80">
<div class="bg-slate-800 rounded-xl p-6 max-w-2xl w-full mx-4 gradient-border">
<div class="flex justify-between items-start mb-4">
<div>
<h3 id="modal-assistant-name" class="text-2xl font-bold gradient-text">Assistant IA</h3>
<div id="modal-assistant-category" class="text-sm text-slate-400">Catégorie</div>
</div>
<button id="close-modal" class="text-slate-400 hover:text-white text-2xl">&times;</button>
</div>
<div id="modal-assistant-description" class="text-slate-300 mb-6">
Description de l'assistant IA...
</div>
<div class="grid grid-cols-2 gap-4 mb-6">
<div>
<div class="text-sm text-slate-400">ID</div>
<div id="modal-assistant-id" class="font-mono">#00000000</div>
</div>
<div>
<div class="text-sm text-slate-400">Version</div>
<div id="modal-assistant-version">1.0.0</div>
</div>
<div>
<div class="text-sm text-slate-400">Créé le</div>
<div id="modal-assistant-created">01/01/2023</div>
</div>
<div>
<div class="text-sm text-slate-400">Utilisations</div>
<div id="modal-assistant-uses">1,234,567</div>
</div>
</div>
<div class="flex flex-wrap gap-4">
<button id="launch-assistant" class="flex-1 bg-indigo-600 hover:bg-indigo-700 text-white font-bold py-3 px-6 rounded-lg transition-colors">
<i class="fas fa-play mr-2"></i> Lancer l'assistant
</button>
<button class="bg-slate-700 hover:bg-slate-600 text-white font-bold py-3 px-6 rounded-lg transition-colors">
<i class="fas fa-star mr-2"></i> Favoris
</button>
<button class="bg-slate-700 hover:bg-slate-600 text-white font-bold py-3 px-6 rounded-lg transition-colors">
<i class="fas fa-share-alt mr-2"></i> Partager
</button>
</div>
</div>
</div>
<script>
// Configuration
const TOTAL_ASSISTANTS = 985896100;
const VISIBLE_ITEMS = 50;
const ITEM_HEIGHT = 60;
// Catégories d'assistants IA
const CATEGORIES = [
{ id: 'marketing', name: 'Marketing', color: 'bg-purple-600' },
{ id: 'dev', name: 'Développement', color: 'bg-blue-600' },
{ id: 'design', name: 'Design', color: 'bg-pink-600' },
{ id: 'writing', name: 'Rédaction', color: 'bg-green-600' },
{ id: 'video', name: 'Vidéo', color: 'bg-red-600' },
{ id: 'audio', name: 'Audio', color: 'bg-yellow-600' }
];
// Fonctions utilitaires
function formatNumber(num) {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function randomDate(start, end) {
return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())).toLocaleDateString('fr-FR');
}
function generateRandomAssistant(id) {
const category = CATEGORIES[Math.floor(Math.random() * CATEGORIES.length)];
const versions = ['1.0.0', '1.1.0', '2.0.0', '2.1.3', '3.0.0-beta'];
return {
id: '#' + id.toString().padStart(8, '0'),
name: `Assistant IA ${formatNumber(id)}`,
category: category.id,
categoryName: category.name,
color: category.color,
description: `Cet assistant IA spécialisé en ${category.name.toLowerCase()} vous aidera à accomplir vos tâches avec une précision de ${Math.floor(Math.random() * 30) + 70}%.`,
version: versions[Math.floor(Math.random() * versions.length)],
created: randomDate(new Date(2020, 0, 1), new Date()),
uses: Math.floor(Math.random() * 10000000)
};
}
// Éléments du DOM
const assistantsContainer = document.getElementById('assistants-container');
const assistantsContent = document.getElementById('assistants-content');
const loadingIndicator = document.getElementById('loading-indicator');
const visibleCount = document.getElementById('visible-count');
const categoryButtons = document.querySelectorAll('.category-btn');
// Modal elements
const assistantModal = document.getElementById('assistant-modal');
const closeModalBtn = document.getElementById('close-modal');
const launchAssistantBtn = document.getElementById('launch-assistant');
// Variables d'état
let currentCategory = 'all';
let scrollPosition = 0;
let renderedItems = [];
// Initialisation du défilement virtuel
function initVirtualScroll() {
// Définir la hauteur totale du contenu
assistantsContent.style.height = `${TOTAL_ASSISTANTS * ITEM_HEIGHT}px`;
// Rendre les premiers éléments
updateVisibleItems();
// Configurer l'écouteur de défilement
assistantsContainer.addEventListener('scroll', () => {
scrollPosition = assistantsContainer.scrollTop;
updateVisibleItems();
});
// Masquer l'indicateur de chargement après un court délai
setTimeout(() => {
loadingIndicator.classList.add('hidden');
}, 1500);
}
// Mettre à jour les éléments visibles
function updateVisibleItems() {
const startIndex = Math.floor(scrollPosition / ITEM_HEIGHT);
const endIndex = Math.min(startIndex + VISIBLE_ITEMS, TOTAL_ASSISTANTS);
// Mettre à jour le compteur visible
visibleCount.textContent = `Affichage ${formatNumber(startIndex + 1)}-${formatNumber(endIndex)} sur ${formatNumber(TOTAL_ASSISTANTS)}`;
// Générer les nouveaux éléments à afficher
const newItems = [];
for (let i = startIndex; i < endIndex; i++) {
newItems.push(createAssistantButton(i + 1));
}
// Mettre à jour le DOM
assistantsContent.innerHTML = '';
assistantsContent.style.transform = `translateY(${startIndex * ITEM_HEIGHT}px)`;
newItems.forEach(item => assistantsContent.appendChild(item));
renderedItems = newItems;
}
// Créer un bouton d'assistant IA
function createAssistantButton(id) {
const assistant = generateRandomAssistant(id);
const button = document.createElement('button');
button.className = `ai-assistant-btn w-full mb-2 p-4 rounded-lg flex items-center justify-between ${assistant.color} bg-opacity-20 hover:bg-opacity-30 transition-all`;
button.dataset.id = id;
button.dataset.category = assistant.category;
button.innerHTML = `
<div class="flex items-center">
<div class="w-10 h-10 rounded-full ${assistant.color} flex items-center justify-center mr-4">
<i class="fas fa-robot text-white"></i>
</div>
<div>
<div class="text-left font-bold">${assistant.name}</div>
<div class="text-xs text-slate-300">${assistant.categoryName}</div>
</div>
</div>
<div class="text-xs text-slate-300">${assistant.id}</div>
`;
button.addEventListener('click', () => openAssistantModal(assistant));
return button;
}
// Filtrer par catégorie
function filterByCategory(category) {
currentCategory = category;
// Mettre à jour les boutons de catégorie
categoryButtons.forEach(btn => {
if (btn.dataset.category === category) {
btn.classList.remove('bg-slate-700');
btn.classList.add('bg-indigo-600');
} else {
btn.classList.remove('bg-indigo-600');
btn.classList.add('bg-slate-700');
}
});
// Recréer les éléments visibles avec le filtre
updateVisibleItems();
}
// Ouvrir la modal d'assistant
function openAssistantModal(assistant) {
document.getElementById('modal-assistant-name').textContent = assistant.name;
document.getElementById('modal-assistant-category').textContent = assistant.categoryName;
document.getElementById('modal-assistant-description').textContent = assistant.description;
document.getElementById('modal-assistant-id').textContent = assistant.id;
document.getElementById('modal-assistant-version').textContent = assistant.version;
document.getElementById('modal-assistant-created').textContent = assistant.created;
document.getElementById('modal-assistant-uses').textContent = formatNumber(assistant.uses);
assistantModal.classList.remove('hidden');
}
// Fermer la modal
function closeAssistantModal() {
assistantModal.classList.add('hidden');
}
// Lancer un assistant IA (simulation)
function launchAssistant() {
const assistantName = document.getElementById('modal-assistant-name').textContent;
alert(`Lancement de ${assistantName} dans une nouvelle fenêtre...`);
// Simuler l'ouverture dans une nouvelle fenêtre
const newWindow = window.open('', '_blank');
if (newWindow) {
newWindow.document.write(`
<!DOCTYPE html>
<html>
<head>
<title>${assistantName}</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background: linear-gradient(135deg, #f5f7fa, #c3cfe2);
margin: 0;
}
.assistant-container {
text-align: center;
padding: 2rem;
background: white;
border-radius: 1rem;
box-shadow: 0 10px 25px rgba(0,0,0,0.1);
max-width: 500px;
width: 90%;
}
h1 {
color: #4f46e5;
margin-bottom: 1rem;
}
p {
color: #6b7280;
margin-bottom: 2rem;
}
.loading {
display: inline-block;
width: 50px;
height: 50px;
border: 5px solid rgba(79, 70, 229, 0.3);
border-radius: 50%;
border-top-color: #4f46e5;
animation: spin 1s ease-in-out infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
</style>
</head>
<body>
<div class="assistant-container">
<h1>${assistantName}</h1>
<p>Chargement de l'assistant IA spécialisé...</p>
<div class="loading"></div>
<p class="mt-4">Cette fenêtre simule l'interface d'un assistant IA réel.</p>
</div>
<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=docto41/hyper-assistant-ia" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html>