Abmacode12 commited on
Commit
298575c
·
verified ·
1 Parent(s): dab6192

Espace Codage - Interface en 3 Colonnes

Browse files

Première Colonne (Gauche)
text
Espace Codage [← cliquable pour retour à l'accueil]
├─ 📋 Nouvelle tâche
├─ 🔍 Rechercher
├─ 📚 Bibliothèque
├─ 📁 Projets
│ └─ 🤖 ChatGPT Anthes
└─ ✅ Toutes les tâches
Deuxième Colonne (Centre - Chat IA)
text
Espace Codage
├─ 💬 Conversation avec l'IA :
│ • Unit Conversion: mL Lµl
│ • "Je suis ton nouveau fondateur avec..."
│ • "Créer un ChatGPT amélioré avec A..."

├─ [Barre de message avec :]
│ └─ 📝 Zone de texte
│ ├─ 🎤 Microphone (fonctionnel)
│ ├─ 📎 Trombone (envoi de fichiers)
│ └─ ➤ Bouton "Envoyer"
Troisième Colonne (Droite - Code & Aperçu)
text
[Aperçu] [Codes] [Paramètres] [Publier]

├─ 🔄 Défilement en temps réel des codes générés par l'IA :
│ • while (code_generation) {
│ • display_new_code_line();
│ • update_preview();
│ • }
│ • ... [les codes défilent ici]

├─ ✅ FIN DE GÉNÉRATION

└─ 📊 **RÉSULTAT FINAL AFFICHÉ ICI**
• Code complet
• Aperçu fonctionnel
• Options d'export
Points clés de l'interface :
Navigation : Cliquer sur "Espace Codage" (en haut de chaque colonne) ramène à la page d'accueil

Colonne 1 : Navigation principale et gestion des projets

Colonne 2 : Interaction conversationnelle avec l'IA + barre d'envoi avec microphone et trombone

Colonne 3 : Visualisation en temps réel du code généré + résultat final après complétion

En-tête Colonne 3 : Onglets "Aperçu" | "Codes" | "Paramètres" | "Publier"

Exactement comme vous l'avez décrit avec le marqueur :

3 colonnes distinctes

Navigation cliquable

Microphone fonctionnel + trombone pour fichiers

Défilement des codes en temps réel

Affichage du résultat final après génération

C'est une interface professionnelle qui montre notre force - propre, fonctionnelle, et adaptée à un workflow de codage avec IA.

Files changed (6) hide show
  1. components/chat.js +106 -0
  2. components/code-preview.js +92 -0
  3. components/sidebar.js +98 -0
  4. index.html +9 -108
  5. script.js +16 -8
  6. style.css +21 -1
components/chat.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomChat extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ height: 100vh;
10
+ background: white;
11
+ border-right: 1px solid #e2e8f0;
12
+ padding: 1.5rem;
13
+ overflow-y: auto;
14
+ }
15
+ .chat-header {
16
+ display: flex;
17
+ align-items: center;
18
+ gap: 0.5rem;
19
+ font-weight: 600;
20
+ color: #1e293b;
21
+ margin-bottom: 1.5rem;
22
+ }
23
+ .conversation {
24
+ margin-bottom: 1.5rem;
25
+ }
26
+ .message {
27
+ background: #f1f5f9;
28
+ padding: 0.75rem 1rem;
29
+ border-radius: 0.75rem;
30
+ margin-bottom: 0.75rem;
31
+ color: #334155;
32
+ }
33
+ .input-area {
34
+ position: fixed;
35
+ bottom: 0;
36
+ left: 280px;
37
+ right: 40%;
38
+ background: white;
39
+ padding: 1rem;
40
+ border-top: 1px solid #e2e8f0;
41
+ display: flex;
42
+ gap: 0.5rem;
43
+ }
44
+ .message-input {
45
+ flex-grow: 1;
46
+ padding: 0.75rem 1rem;
47
+ border: 1px solid #e2e8f0;
48
+ border-radius: 0.5rem;
49
+ outline: none;
50
+ }
51
+ .message-input:focus {
52
+ border-color: #93c5fd;
53
+ }
54
+ .action-button {
55
+ background: none;
56
+ border: none;
57
+ cursor: pointer;
58
+ color: #64748b;
59
+ padding: 0.5rem;
60
+ border-radius: 0.5rem;
61
+ }
62
+ .action-button:hover {
63
+ background: #f1f5f9;
64
+ color: #1e40af;
65
+ }
66
+ .send-button {
67
+ background: #3b82f6;
68
+ color: white;
69
+ border: none;
70
+ border-radius: 0.5rem;
71
+ padding: 0 1rem;
72
+ cursor: pointer;
73
+ }
74
+ .send-button:hover {
75
+ background: #2563eb;
76
+ }
77
+ i {
78
+ width: 20px;
79
+ height: 20px;
80
+ }
81
+ </style>
82
+ <div class="chat-header">
83
+ <i data-feather="message-square"></i>
84
+ <span>Conversation avec l'IA</span>
85
+ </div>
86
+ <div class="conversation">
87
+ <div class="message">Unit Conversion: mL Lµl</div>
88
+ <div class="message">"Je suis ton nouveau fondateur avec..."</div>
89
+ <div class="message">"Créer un ChatGPT amélioré avec A..."</div>
90
+ </div>
91
+ <div class="input-area">
92
+ <input type="text" class="message-input" placeholder="Écrivez votre message...">
93
+ <button class="action-button">
94
+ <i data-feather="mic"></i>
95
+ </button>
96
+ <button class="action-button">
97
+ <i data-feather="paperclip"></i>
98
+ </button>
99
+ <button class="send-button">
100
+ <i data-feather="send"></i>
101
+ </button>
102
+ </div>
103
+ `;
104
+ }
105
+ }
106
+ customElements.define('custom-chat', CustomChat);
components/code-preview.js ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomCodePreview extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 100%;
9
+ height: 100vh;
10
+ background: white;
11
+ padding: 1.5rem;
12
+ overflow-y: auto;
13
+ }
14
+ .tabs {
15
+ display: flex;
16
+ border-bottom: 1px solid #e2e8f0;
17
+ margin-bottom: 1.5rem;
18
+ }
19
+ .tab {
20
+ padding: 0.5rem 1rem;
21
+ cursor: pointer;
22
+ color: #64748b;
23
+ border-bottom: 2px solid transparent;
24
+ }
25
+ .tab.active {
26
+ color: #1e40af;
27
+ border-bottom-color: #1e40af;
28
+ }
29
+ .code-area {
30
+ background: #f8fafc;
31
+ border: 1px solid #e2e8f0;
32
+ border-radius: 0.5rem;
33
+ padding: 1rem;
34
+ font-family: monospace;
35
+ white-space: pre;
36
+ overflow-x: auto;
37
+ margin-bottom: 1rem;
38
+ }
39
+ .final-result {
40
+ margin-top: 2rem;
41
+ padding-top: 1rem;
42
+ border-top: 1px solid #e2e8f0;
43
+ }
44
+ .result-title {
45
+ font-weight: 600;
46
+ margin-bottom: 1rem;
47
+ color: #1e293b;
48
+ }
49
+ .export-options {
50
+ display: flex;
51
+ gap: 0.5rem;
52
+ margin-top: 1rem;
53
+ }
54
+ .export-button {
55
+ background: #e0f2fe;
56
+ color: #0369a1;
57
+ border: none;
58
+ border-radius: 0.5rem;
59
+ padding: 0.5rem 1rem;
60
+ cursor: pointer;
61
+ font-size: 0.875rem;
62
+ }
63
+ </style>
64
+ <div class="tabs">
65
+ <div class="tab active">Aperçu</div>
66
+ <div class="tab">Codes</div>
67
+ <div class="tab">Paramètres</div>
68
+ <div class="tab">Publier</div>
69
+ </div>
70
+ <div class="code-area">
71
+ while (code_generation) {
72
+ display_new_code_line();
73
+ update_preview();
74
+ }
75
+ ... [les codes défilent ici]
76
+ </div>
77
+ <div class="status">✅ FIN DE GÉNÉRATION</div>
78
+ <div class="final-result">
79
+ <div class="result-title">📊 RÉSULTAT FINAL AFFICHÉ ICI</div>
80
+ <div>• Code complet</div>
81
+ <div>• Aperçu fonctionnel</div>
82
+ <div>• Options d'export</div>
83
+ <div class="export-options">
84
+ <button class="export-button">Télécharger</button>
85
+ <button class="export-button">Copier</button>
86
+ <button class="export-button">Partager</button>
87
+ </div>
88
+ </div>
89
+ `;
90
+ }
91
+ }
92
+ customElements.define('custom-code-preview', CustomCodePreview);
components/sidebar.js ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomSidebar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ display: block;
8
+ width: 280px;
9
+ background: #f8fafc;
10
+ height: 100vh;
11
+ position: fixed;
12
+ left: 0;
13
+ top: 0;
14
+ border-right: 1px solid #e2e8f0;
15
+ padding: 1.5rem;
16
+ overflow-y: auto;
17
+ }
18
+ .logo {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: 0.5rem;
22
+ font-weight: 600;
23
+ color: #1e293b;
24
+ margin-bottom: 2rem;
25
+ cursor: pointer;
26
+ }
27
+ .menu-item {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 0.75rem;
31
+ padding: 0.75rem;
32
+ border-radius: 0.5rem;
33
+ color: #475569;
34
+ cursor: pointer;
35
+ }
36
+ .menu-item:hover {
37
+ background: #e2e8f0;
38
+ color: #1e40af;
39
+ }
40
+ .menu-item.active {
41
+ background: #dbeafe;
42
+ color: #1e40af;
43
+ }
44
+ .submenu {
45
+ padding-left: 1.5rem;
46
+ margin-top: 0.25rem;
47
+ }
48
+ .submenu-item {
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 0.75rem;
52
+ padding: 0.5rem 0.75rem;
53
+ border-radius: 0.5rem;
54
+ color: #475569;
55
+ cursor: pointer;
56
+ }
57
+ .submenu-item:hover {
58
+ background: #e2e8f0;
59
+ }
60
+ i {
61
+ width: 20px;
62
+ height: 20px;
63
+ }
64
+ </style>
65
+ <div class="logo">
66
+ <i data-feather="code"></i>
67
+ <span>Espace Codage</span>
68
+ </div>
69
+ <div class="menu-item active">
70
+ <i data-feather="plus-square"></i>
71
+ <span>Nouvelle tâche</span>
72
+ </div>
73
+ <div class="menu-item">
74
+ <i data-feather="search"></i>
75
+ <span>Rechercher</span>
76
+ </div>
77
+ <div class="menu-item">
78
+ <i data-feather="book"></i>
79
+ <span>Bibliothèque</span>
80
+ </div>
81
+ <div class="menu-item">
82
+ <i data-feather="folder"></i>
83
+ <span>Projets</span>
84
+ </div>
85
+ <div class="submenu">
86
+ <div class="submenu-item">
87
+ <i data-feather="cpu"></i>
88
+ <span>ChatGPT Anthes</span>
89
+ </div>
90
+ </div>
91
+ <div class="menu-item">
92
+ <i data-feather="check-square"></i>
93
+ <span>Toutes les tâches</span>
94
+ </div>
95
+ `;
96
+ }
97
+ }
98
+ customElements.define('custom-sidebar', CustomSidebar);
index.html CHANGED
@@ -1,3 +1,4 @@
 
1
  <!DOCTYPE html>
2
  <html lang="fr">
3
  <head>
@@ -10,118 +11,18 @@
10
  <script src="https://unpkg.com/feather-icons"></script>
11
  </head>
12
  <body class="bg-gray-100 font-sans">
13
- <div class="min-h-screen flex flex-col">
14
- <!-- Header -->
15
- <header class="bg-white shadow-sm">
16
- <div class="container mx-auto px-4 py-4 flex justify-between items-center">
17
- <div class="flex items-center space-x-2">
18
- <i data-feather="code" class="text-blue-600"></i>
19
- <h1 class="text-xl font-bold text-gray-800">Espace Codage</h1>
20
- </div>
21
- <nav class="hidden md:flex space-x-6">
22
- <a href="#" class="text-blue-600 font-medium">Accueil</a>
23
- <a href="#" class="text-gray-600 hover:text-blue-600">Cours</a>
24
- <a href="#" class="text-gray-600 hover:text-blue-600">Projets</a>
25
- <a href="#" class="text-gray-600 hover:text-blue-600">Communauté</a>
26
- </nav>
27
- <button class="md:hidden">
28
- <i data-feather="menu"></i>
29
- </button>
30
- </div>
31
- </header>
32
-
33
- <!-- Main Content -->
34
- <main class="flex-grow container mx-auto px-4 py-8">
35
- <div class="max-w-4xl mx-auto">
36
- <section class="mb-12 text-center">
37
- <h2 class="text-3xl md:text-4xl font-bold text-gray-800 mb-4">Apprenez à coder avec Espace Codage</h2>
38
- <p class="text-lg text-gray-600 mb-8">Découvrez nos cours interactifs et rejoignez notre communauté de développeurs passionnés.</p>
39
- <button class="bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-6 rounded-lg shadow-md transition duration-300">
40
- Commencer maintenant
41
- </button>
42
- </section>
43
-
44
- <section class="grid md:grid-cols-3 gap-8 mb-12">
45
- <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-300">
46
- <div class="text-blue-600 mb-4">
47
- <i data-feather="book" class="w-8 h-8"></i>
48
- </div>
49
- <h3 class="text-xl font-semibold mb-2">Cours Complets</h3>
50
- <p class="text-gray-600">Apprenez à votre rythme avec nos cours structurés et progressifs.</p>
51
- </div>
52
- <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-300">
53
- <div class="text-blue-600 mb-4">
54
- <i data-feather="code" class="w-8 h-8"></i>
55
- </div>
56
- <h3 class="text-xl font-semibold mb-2">Pratique Immédiate</h3>
57
- <p class="text-gray-600">Mettez en pratique vos connaissances avec des exercices interactifs.</p>
58
- </div>
59
- <div class="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition duration-300">
60
- <div class="text-blue-600 mb-4">
61
- <i data-feather="users" class="w-8 h-8"></i>
62
- </div>
63
- <h3 class="text-xl font-semibold mb-2">Communauté Active</h3>
64
- <p class="text-gray-600">Échangez avec d'autres apprenants et développeurs expérimentés.</p>
65
- </div>
66
- </section>
67
-
68
- <section class="bg-white p-8 rounded-xl shadow-sm mb-12">
69
- <h2 class="text-2xl font-bold text-gray-800 mb-6">Nos Technologies</h2>
70
- <div class="grid grid-cols-2 md:grid-cols-4 gap-4">
71
- <div class="flex flex-col items-center p-4">
72
- <img src="https://enzostvs-cached-generation.hf.space/generate/html5-logo?format=square" alt="HTML" class="w-16 h-16 mb-2">
73
- <span class="text-gray-700">HTML</span>
74
- </div>
75
- <div class="flex flex-col items-center p-4">
76
- <img src="https://enzostvs-cached-generation.hf.space/generate/css3-logo?format=square" alt="CSS" class="w-16 h-16 mb-2">
77
- <span class="text-gray-700">CSS</span>
78
- </div>
79
- <div class="flex flex-col items-center p-4">
80
- <img src="https://enzostvs-cached-generation.hf.space/generate/javascript-logo?format=square" alt="JavaScript" class="w-16 h-16 mb-2">
81
- <span class="text-gray-700">JavaScript</span>
82
- </div>
83
- <div class="flex flex-col items-center p-4">
84
- <img src="https://enzostvs-cached-generation.hf.space/generate/python-logo?format=square" alt="Python" class="w-16 h-16 mb-2">
85
- <span class="text-gray-700">Python</span>
86
- </div>
87
- </div>
88
- </section>
89
- </div>
90
- </main>
91
-
92
- <!-- Footer -->
93
- <footer class="bg-gray-800 text-white py-8">
94
- <div class="container mx-auto px-4">
95
- <div class="flex flex-col md:flex-row justify-between items-center">
96
- <div class="mb-4 md:mb-0">
97
- <div class="flex items-center space-x-2">
98
- <i data-feather="code" class="text-blue-400"></i>
99
- <span class="font-bold">Espace Codage</span>
100
- </div>
101
- <p class="text-gray-400 mt-2">Apprenez, codez, partagez.</p>
102
- </div>
103
- <div class="flex space-x-4">
104
- <a href="#" class="text-gray-400 hover:text-white">
105
- <i data-feather="twitter"></i>
106
- </a>
107
- <a href="#" class="text-gray-400 hover:text-white">
108
- <i data-feather="github"></i>
109
- </a>
110
- <a href="#" class="text-gray-400 hover:text-white">
111
- <i data-feather="linkedin"></i>
112
- </a>
113
- </div>
114
- </div>
115
- <div class="border-t border-gray-700 mt-6 pt-6 text-center text-gray-400 text-sm">
116
- <p>© 2023 Espace Codage. Tous droits réservés.</p>
117
- </div>
118
- </div>
119
- </footer>
120
  </div>
121
 
122
  <script>
123
  feather.replace();
124
  </script>
125
- <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
 
 
 
126
  </body>
127
  </html>
 
1
+
2
  <!DOCTYPE html>
3
  <html lang="fr">
4
  <head>
 
11
  <script src="https://unpkg.com/feather-icons"></script>
12
  </head>
13
  <body class="bg-gray-100 font-sans">
14
+ <div class="flex h-screen">
15
+ <custom-sidebar></custom-sidebar>
16
+ <custom-chat></custom-chat>
17
+ <custom-code-preview></custom-code-preview>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  </div>
19
 
20
  <script>
21
  feather.replace();
22
  </script>
23
+ <script src="components/sidebar.js"></script>
24
+ <script src="components/chat.js"></script>
25
+ <script src="components/code-preview.js"></script>
26
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
27
  </body>
28
  </html>
script.js CHANGED
@@ -1,11 +1,19 @@
1
- // Mobile menu toggle functionality can be added here
2
  document.addEventListener('DOMContentLoaded', function() {
3
- const menuButton = document.querySelector('button[aria-label="Menu"]');
4
- const nav = document.querySelector('nav');
5
-
6
- if (menuButton && nav) {
7
- menuButton.addEventListener('click', function() {
8
- nav.classList.toggle('hidden');
 
 
 
 
 
 
 
 
9
  });
10
  }
11
- });
 
1
+
2
  document.addEventListener('DOMContentLoaded', function() {
3
+ // Tab switching functionality for code preview
4
+ const tabs = document.querySelectorAll('custom-code-preview .tab');
5
+ tabs.forEach(tab => {
6
+ tab.addEventListener('click', function() {
7
+ tabs.forEach(t => t.classList.remove('active'));
8
+ this.classList.add('active');
9
+ });
10
+ });
11
+
12
+ // Sidebar navigation
13
+ const logo = document.querySelector('custom-sidebar .logo');
14
+ if (logo) {
15
+ logo.addEventListener('click', function() {
16
+ window.location.href = '/';
17
  });
18
  }
19
+ });
style.css CHANGED
@@ -1 +1,21 @@
1
- /* Custom styles can be added here if needed */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ body {
3
+ margin: 0;
4
+ padding: 0;
5
+ overflow: hidden;
6
+ }
7
+
8
+ custom-sidebar {
9
+ width: 280px;
10
+ flex-shrink: 0;
11
+ }
12
+
13
+ custom-chat {
14
+ flex-grow: 1;
15
+ width: calc(100% - 280px - 40%);
16
+ }
17
+
18
+ custom-code-preview {
19
+ width: 40%;
20
+ flex-shrink: 0;
21
+ }