Spaces:
Running
Running
# Préparation du fichier final HTML/CSS/JS à afficher en texte brut pour l'utilisateur
Browse filesfrom zipfile import ZipFile
import os
# Décompresser le fichier zip généré précédemment
zip_path = "/mnt/data/espace_codage_rosalinda_final.zip"
extract_dir = "/mnt/data/espace_codage_rosalinda_final"
with ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(extract_dir)
# Lister les fichiers extraits
file_paths = []
for root, dirs, files in os.walk(extract_dir):
for file in files:
full_path = os.path.join(root, file)
file_paths.append(full_path)
file_paths
- README.md +33 -13
- components/footer.js +28 -0
- index.html +3 -2
- script.js +30 -0
- style.css +3 -0
- styles.css +5 -1
README.md
CHANGED
|
@@ -1,13 +1,33 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
```markdown
|
| 2 |
+
# Espace Codage - Rosalinda
|
| 3 |
+
|
| 4 |
+
Application web d'assistance au codage avec IA intégrée.
|
| 5 |
+
|
| 6 |
+
## Fonctionnalités
|
| 7 |
+
|
| 8 |
+
- Interface 3 colonnes (Menu, Chat, Code)
|
| 9 |
+
- Thème clair/sombre
|
| 10 |
+
- Gestion de projets
|
| 11 |
+
- Chat avec l'IA Rosalinda (intégration OpenAI)
|
| 12 |
+
- Affichage du code généré
|
| 13 |
+
- Onglets multiples (Code, Tableau de bord, Base de données, Stockage, Paramètres)
|
| 14 |
+
|
| 15 |
+
## Installation
|
| 16 |
+
|
| 17 |
+
1. Télécharger les fichiers
|
| 18 |
+
2. Ouvrir `index.html` dans un navigateur moderne
|
| 19 |
+
3. Configurer votre clé API OpenAI via le bouton "Connexion"
|
| 20 |
+
|
| 21 |
+
## Technologies
|
| 22 |
+
|
| 23 |
+
- HTML5, CSS3, JavaScript
|
| 24 |
+
- Web Components
|
| 25 |
+
- LocalStorage
|
| 26 |
+
- OpenAI API
|
| 27 |
+
- TailwindCSS
|
| 28 |
+
- Font Awesome
|
| 29 |
+
|
| 30 |
+
## Auteur
|
| 31 |
+
|
| 32 |
+
[Votre nom]
|
| 33 |
+
```
|
components/footer.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class CustomFooter extends HTMLElement {
|
| 2 |
+
connectedCallback() {
|
| 3 |
+
this.attachShadow({ mode: 'open' });
|
| 4 |
+
this.shadowRoot.innerHTML = `
|
| 5 |
+
<style>
|
| 6 |
+
:host {
|
| 7 |
+
display: block;
|
| 8 |
+
width: 100%;
|
| 9 |
+
padding: 1rem;
|
| 10 |
+
text-align: center;
|
| 11 |
+
font-size: 0.8rem;
|
| 12 |
+
color: var(--text-color, rgb(100 116 139));
|
| 13 |
+
border-top: 1px solid var(--border-color, rgb(226 232 240));
|
| 14 |
+
background: var(--bg-color, rgb(248 250 252));
|
| 15 |
+
}
|
| 16 |
+
.dark :host {
|
| 17 |
+
--text-color: rgb(148 163 184);
|
| 18 |
+
--border-color: rgb(30 41 59);
|
| 19 |
+
--bg-color: rgb(15 23 42);
|
| 20 |
+
}
|
| 21 |
+
</style>
|
| 22 |
+
<div>
|
| 23 |
+
<p>Espace Codage © ${new Date().getFullYear()}</p>
|
| 24 |
+
</div>
|
| 25 |
+
`;
|
| 26 |
+
}
|
| 27 |
+
}
|
| 28 |
+
customElements.define('custom-footer', CustomFooter);
|
index.html
CHANGED
|
@@ -131,8 +131,9 @@
|
|
| 131 |
</section>
|
| 132 |
|
| 133 |
</div>
|
| 134 |
-
|
| 135 |
<script src="script.js"></script>
|
| 136 |
-
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
|
|
|
| 137 |
</body>
|
| 138 |
</html>
|
|
|
|
| 131 |
</section>
|
| 132 |
|
| 133 |
</div>
|
| 134 |
+
<script src="components/sidebar.js"></script>
|
| 135 |
<script src="script.js"></script>
|
| 136 |
+
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 137 |
+
<custom-footer></custom-footer>
|
| 138 |
</body>
|
| 139 |
</html>
|
script.js
CHANGED
|
@@ -1,6 +1,36 @@
|
|
| 1 |
|
| 2 |
console.log("Interface Espace Codage chargée.");
|
| 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
// Create sidebar component
|
| 5 |
class CustomSidebar extends HTMLElement {
|
| 6 |
connectedCallback() {
|
|
|
|
| 1 |
|
| 2 |
console.log("Interface Espace Codage chargée.");
|
| 3 |
|
| 4 |
+
// Initialize components
|
| 5 |
+
class CustomFooter extends HTMLElement {
|
| 6 |
+
connectedCallback() {
|
| 7 |
+
this.attachShadow({ mode: 'open' });
|
| 8 |
+
this.shadowRoot.innerHTML = `
|
| 9 |
+
<style>
|
| 10 |
+
:host {
|
| 11 |
+
display: block;
|
| 12 |
+
width: 100%;
|
| 13 |
+
padding: 1rem;
|
| 14 |
+
text-align: center;
|
| 15 |
+
font-size: 0.8rem;
|
| 16 |
+
color: var(--text-color, rgb(100 116 139));
|
| 17 |
+
border-top: 1px solid var(--border-color, rgb(226 232 240));
|
| 18 |
+
background: var(--bg-color, rgb(248 250 252));
|
| 19 |
+
}
|
| 20 |
+
.dark :host {
|
| 21 |
+
--text-color: rgb(148 163 184);
|
| 22 |
+
--border-color: rgb(30 41 59);
|
| 23 |
+
--bg-color: rgb(15 23 42);
|
| 24 |
+
}
|
| 25 |
+
</style>
|
| 26 |
+
<div>
|
| 27 |
+
<p>Espace Codage © ${new Date().getFullYear()}</p>
|
| 28 |
+
</div>
|
| 29 |
+
`;
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
customElements.define('custom-footer', CustomFooter);
|
| 33 |
+
|
| 34 |
// Create sidebar component
|
| 35 |
class CustomSidebar extends HTMLElement {
|
| 36 |
connectedCallback() {
|
style.css
CHANGED
|
@@ -3,6 +3,9 @@ body {
|
|
| 3 |
padding: 0;
|
| 4 |
margin: 0;
|
| 5 |
font-family: -apple-system, BlinkMacSystemFont, "Inter", sans-serif;
|
|
|
|
|
|
|
|
|
|
| 6 |
}
|
| 7 |
h1 {
|
| 8 |
font-size: 16px;
|
|
|
|
| 3 |
padding: 0;
|
| 4 |
margin: 0;
|
| 5 |
font-family: -apple-system, BlinkMacSystemFont, "Inter", sans-serif;
|
| 6 |
+
display: flex;
|
| 7 |
+
flex-direction: column;
|
| 8 |
+
min-height: 100vh;
|
| 9 |
}
|
| 10 |
h1 {
|
| 11 |
font-size: 16px;
|
styles.css
CHANGED
|
@@ -289,7 +289,6 @@ border-left: 1px solid rgb(226 232 240);
|
|
| 289 |
border-top: 1px solid rgb(226 232 240);
|
| 290 |
}
|
| 291 |
}
|
| 292 |
-
|
| 293 |
/* Ensure minimum widths for columns */
|
| 294 |
.sidebar {
|
| 295 |
min-width: 200px;
|
|
@@ -300,3 +299,8 @@ border-left: 1px solid rgb(226 232 240);
|
|
| 300 |
.output {
|
| 301 |
min-width: 400px;
|
| 302 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
border-top: 1px solid rgb(226 232 240);
|
| 290 |
}
|
| 291 |
}
|
|
|
|
| 292 |
/* Ensure minimum widths for columns */
|
| 293 |
.sidebar {
|
| 294 |
min-width: 200px;
|
|
|
|
| 299 |
.output {
|
| 300 |
min-width: 400px;
|
| 301 |
}
|
| 302 |
+
|
| 303 |
+
/* Footer styles */
|
| 304 |
+
custom-footer {
|
| 305 |
+
margin-top: auto;
|
| 306 |
+
}
|