diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/E-commerce.iml b/.idea/E-commerce.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/E-commerce.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2886abb --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2ba986f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "Launch Chrome against localhost", + "url": "http://localhost:8080", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c1951c0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.linkedEditing": true +} \ No newline at end of file diff --git a/assets/css/a-propos.css b/assets/css/a-propos.css new file mode 100644 index 0000000..ff201d6 --- /dev/null +++ b/assets/css/a-propos.css @@ -0,0 +1,44 @@ +/* Styles pour la page À Propos */ + +.a-propos-intro { + text-align: center; + margin-bottom: 40px; + font-size: 1.1rem; +} + +.nos-valeurs { + display: flex; + justify-content: space-around; + text-align: center; + margin-bottom: 50px; +} + +.valeur-item { + width: 30%; + padding: 20px; + border: 1px solid #ccc; + border-radius: 8px; +} + +.valeur-item img { + width: 80px; /* Assurez-vous d'avoir des images dans /assets/images */ + margin-bottom: 10px; +} + +.notre-equipe { + text-align: center; +} + +.equipe-membre { + display: inline-block; + width: 200px; + margin: 20px; +} + +.equipe-membre img { + width: 100%; + height: 200px; + object-fit: cover; + border-radius: 50%; /* Image circulaire */ + margin-bottom: 10px; +} \ No newline at end of file diff --git a/assets/css/contact.css b/assets/css/contact.css new file mode 100644 index 0000000..b3e699f --- /dev/null +++ b/assets/css/contact.css @@ -0,0 +1,58 @@ +/* Styles pour la page Contact */ + +.contact-page { + display: flex; + flex-direction: column; + align-items: center; +} + +.contact-info { + text-align: center; + margin-bottom: 40px; +} + +.form-container { + width: 100%; + max-width: 600px; + padding: 30px; + background: #ffffff; + border: 1px solid #e9ecef; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0,0,0,0.05); +} + +.contact-form label { + display: block; + margin-top: 15px; + font-weight: bold; +} + +.contact-form input[type="text"], +.contact-form input[type="email"], +.contact-form textarea { + width: 100%; + padding: 10px; + margin-top: 5px; + border: 1px solid #ccc; + border-radius: 4px; +} + +.contact-form textarea { + resize: vertical; +} + +.btn-submit { + background-color: var(--couleur-primaire); + color: white; + padding: 12px 20px; + border: none; + border-radius: 4px; + cursor: pointer; + margin-top: 20px; + font-size: 1rem; + transition: background-color 0.3s; +} + +.btn-submit:hover { + background-color: #0056b3; /* Une nuance plus foncée au survol */ +} \ No newline at end of file diff --git a/assets/css/faq.css b/assets/css/faq.css new file mode 100644 index 0000000..671ecd5 --- /dev/null +++ b/assets/css/faq.css @@ -0,0 +1,38 @@ +/* Styles pour la page FAQ */ + +.faq-page h1 { + text-align: center; + margin-bottom: 40px; +} + +.faq-categorie { + margin-bottom: 30px; + padding: 20px; + border: 1px solid #e9ecef; + border-radius: 6px; + background-color: #ffffff; +} + +.faq-categorie h2 { + color: var(--couleur-primaire); + margin-bottom: 15px; + border-bottom: 1px dashed #ccc; + padding-bottom: 5px; +} + +.qa-item { + margin-bottom: 20px; +} + +.qa-item h3 { + font-size: 1.1rem; + color: var(--couleur-texte); + cursor: pointer; /* Indiquer que c'est cliquable (même si c'est statique) */ +} + +.qa-item p { + padding-left: 20px; + border-left: 3px solid #ccc; + margin-top: 5px; + color: var(--couleur-secondaire); +} \ No newline at end of file diff --git a/assets/css/global.css b/assets/css/global.css new file mode 100644 index 0000000..d258099 --- /dev/null +++ b/assets/css/global.css @@ -0,0 +1,86 @@ +/* Définition des variables de couleur pour la charte graphique */ +:root { + --couleur-primaire: #776f73; /* Bleu (boutons, liens) */ + --couleur-secondaire: #cccccc; /* Gris */ + --couleur-fond: #8f253c; /* Fond clair */ + --couleur-texte: #212529; /* Noir/Gris foncé */ +} + +/* Base Reset/Typographie */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: Arial, sans-serif; + line-height: 1.6; + color: var(--couleur-texte); + background-color: var(--couleur-fond); +} + +.page-content { + max-width: 1200px; + margin: 40px auto; + padding: 20px; +} + +/* HEADER Styles */ +.main-header { + background-color: #ffffff; + border-bottom: 1px solid #e9ecef; + padding: 15px 50px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo a { + font-size: 1.5rem; + font-weight: bold; + color: var(--couleur-primaire); + text-decoration: none; +} + +.main-nav ul { + list-style: none; + display: flex; +} + +.main-nav li a { + text-decoration: none; + color: var(--couleur-texte); + padding: 0 15px; + transition: color 0.3s; +} + +.main-nav li a:hover { + color: var(--couleur-primaire); +} + +/* FOOTER Styles */ +.main-footer { + background-color: var(--couleur-texte); + color: #ffffff; + padding: 40px 50px; + display: flex; + justify-content: space-around; + flex-wrap: wrap; + margin-top: 50px; +} + +.footer-links, .footer-contact, .footer-copyright { + margin: 10px; +} + +.main-footer h4 { + border-bottom: 2px solid var(--couleur-primaire); + padding-bottom: 5px; + margin-bottom: 15px; +} + +.main-footer a { + color: #cccccc; + text-decoration: none; +} \ No newline at end of file diff --git a/assets/css/images/pages/a-propos.html b/assets/css/images/pages/a-propos.html new file mode 100644 index 0000000..477a8a5 --- /dev/null +++ b/assets/css/images/pages/a-propos.html @@ -0,0 +1,76 @@ + + + + + + Nom du Site - À Propos + + + +
+ + +
+ +
+
+

Notre Histoire & Nos Valeurs

+
+

Bienvenue chez POLYTECHNIC WX ! Notre aventure a commencé en 2O2O avec l'idée simple de...

+
+ +
+

Nos Valeurs Fondamentales

+
+ Icone Écologie +

Durabilité

+

Nous privilégions les matériaux éco-responsables et les circuits courts.

+
+
+ Icone Qualité +

Qualité

+

Chaque produit est sélectionné et testé pour une longévité maximale.

+
+
+ +
+

Rencontrez l'Équipe

+
+ Photo de Personne 1 +

Bakotcha loic

+

Fondatrice & CEO

+
+
+
+
+ + + + + \ No newline at end of file diff --git a/assets/css/images/pages/contact.html b/assets/css/images/pages/contact.html new file mode 100644 index 0000000..1a555e4 --- /dev/null +++ b/assets/css/images/pages/contact.html @@ -0,0 +1,78 @@ + + + + + + Nom du Site - À Propos + + + +
+ + +
+ +
+
+ +

Contactez-Nous

+ +
+

Informations Clés

+

Téléphone : +237 677461149

+

Email : loicbakotcha@gmail.com

+

Adresse : 123 Rue de Melen yaoundé

+
+ +
+

Envoyez-Nous un Message

+
+ + + + + + + + + + + + + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/assets/css/images/pages/faq.html b/assets/css/images/pages/faq.html new file mode 100644 index 0000000..0c70d1f --- /dev/null +++ b/assets/css/images/pages/faq.html @@ -0,0 +1,75 @@ + + + + + + Nom du Site - À Propos + + + +
+ + +
+ +
+
+

Foire Aux Questions

+ +
+

Commandes et Paiement

+
+

Comment puis-je passer une commande ?

+

Ajoutez les produits souhaités au panier et suivez les étapes de validation.

+
+
+

Quels modes de paiement acceptez-vous ?

+

Nous acceptons Visa, Mastercard, PayPal et virement bancaire.

+
+
+ +
+

Livraison et Retours

+
+

Quel est le délai de livraison ?

+

Le délai standard est de 3 à 5 jours ouvrables pour la France métropolitaine.

+
+
+

Comment effectuer un retour ?

+

Vous disposez de 14 jours pour retourner un article. Veuillez contacter le support par email.

+
+
+ +
+
+ + + + + \ No newline at end of file diff --git a/assets/images/Services (10).png b/assets/images/Services (10).png new file mode 100644 index 0000000..05097d8 Binary files /dev/null and b/assets/images/Services (10).png differ diff --git a/pages/blog.html b/pages/blog.html new file mode 100644 index 0000000..4ff311c --- /dev/null +++ b/pages/blog.html @@ -0,0 +1,127 @@ + + + + + + + Blog – E-Shop + + + + + +
+ +
+ +
+
+
+

Notre Blog

+

Les dernières actualités, conseils et tendances tech

+
+
+ +
+
+ phones +
+

Les 5 meilleurs smartphones de 2025

+

Découvrez quelles sont les références à ne pas manquer cette année dans l’univers des smartphones …

+ 15 septembre 2025 +
+
+ +
+ laptop +
+

Guide d’achat : choisir un bon ordinateur portable

+

Que faut-il regarder ? Notre guide complet pour t’aider à faire le bon choix …

+ 1 août 2025 +
+
+ +
+ gpc +
+

Accessoires incontournables pour gamer

+

Manettes, casques, écrans — zoom sur les accessoires utiles pour améliorer ton expérience gaming …

+ 20 juillet 2025 +
+
+ + +
+
+ + + + diff --git a/pages/login-page.html b/pages/login-page.html new file mode 100644 index 0000000..9f168b2 --- /dev/null +++ b/pages/login-page.html @@ -0,0 +1,60 @@ + + + + + Title + + + +
+

Bienvenue sur notre Page D'inscription

+
+ +
+
+ + \ No newline at end of file diff --git a/pages/mon-compte.html b/pages/mon-compte.html new file mode 100644 index 0000000..c731090 --- /dev/null +++ b/pages/mon-compte.html @@ -0,0 +1,89 @@ + + + + + Dashboard Client - E-commerce + + + + + +
+ +
+

Résumé du compte

+

Date de création : 15 Janvier 2022

+

Nombre Total de commandes : 56

+
+ + +
+

Points de fidélité

+

Total points : 520

+

Récompenses disponibles : 2 bons d’achat

+
+ + +
+

Historique des commandes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Code CommandeDateStatutMontantActions
A2025-00101/09/2025Livrée$230Détails | Télécharger facture
A2025-00215/09/2025Livrée$120Détails | Télécharger facture
A2025-00328/09/2025En attente$86Détails | Télécharger facture
+ +
+ + +
+

Retours & Réclamations

+

Aucun retour en cours.

+
+ + +
+

Produits consultés récemment

+ +
+
+ + diff --git a/pages/paiement.html b/pages/paiement.html new file mode 100644 index 0000000..e77d310 --- /dev/null +++ b/pages/paiement.html @@ -0,0 +1,104 @@ + + + + + + Paiement - E-commerce + + + +
+ + +
+ +
+
+

Finaliser le paiement

+ +
+

Informations personnelles

+
+ + +
+
+ + +
+ +

Adresse de livraison

+
+ + +
+
+ + +
+ +

Informations de paiement

+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + diff --git a/pages/paiement_reussi.html b/pages/paiement_reussi.html new file mode 100644 index 0000000..4417097 --- /dev/null +++ b/pages/paiement_reussi.html @@ -0,0 +1,34 @@ + + + + + + Paiement Réussi - E-commerce + + + +
+ + +
+ +
+
+

✅ Paiement réussi !

+

Merci pour votre commande. Vous recevrez un email de confirmation sous peu.

+ Retourner à la boutique +
+
+ + + + diff --git a/pages/prodDetails.html b/pages/prodDetails.html index b04305b..a8500b0 100644 --- a/pages/prodDetails.html +++ b/pages/prodDetails.html @@ -26,6 +26,9 @@

Iphone 17

(12k Reviews)
$999
+
+

The iPhone 17 features a stunning OLED display, advanced A17 Bionic chip, and a versatile triple-camera system. Experience lightning-fast performance and capture every moment in incredible detail.

+
diff --git a/pages/promotions.html b/pages/promotions.html new file mode 100644 index 0000000..36bc48b --- /dev/null +++ b/pages/promotions.html @@ -0,0 +1,192 @@ + + + + + + + Promotions – E-Shop + + + + + +
+ +
+ +
+
+
+

Offres Exceptionnelles

+

Profitez de réductions incroyables dès maintenant !

+
+
+ + +
+

Offre à durée limitée

+
+
+ 00 + Jours +
+
+ 00 + Heures +
+
+ 00 + Minutes +
+
+ 00 + Secondes +
+
+
+ + +
+

Produits en promotion

+
+ +
+ Iphone 16 Pro Max +
+

Iphone 16 Pro Max

+

1.200. 000 FCFA

+

800.000 FCFA

+
+
+
+ Headset +
+

Headset Logitech 3X

+

38.000 FCFA

+

20.000FCFA

+
+
+
+ S25 +
+

Samsung Galaxy S25

+

1000.000FCFA

+

600. 000 FCFA

+
+
+
+ Produit 4 +
+

Laptop Asus V pro

+

700.000FCFA

+

400.000 FCFA

+
+
+ +
+
+ + +
+ + + + + + diff --git a/pages/register-page.html b/pages/register-page.html new file mode 100644 index 0000000..8fc2db5 --- /dev/null +++ b/pages/register-page.html @@ -0,0 +1,64 @@ + + + + + Title + + + + + + \ No newline at end of file diff --git a/styles/blog.css b/styles/blog.css new file mode 100644 index 0000000..c27a937 --- /dev/null +++ b/styles/blog.css @@ -0,0 +1,278 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Poppins', sans-serif; +} + +body { + background-color: #fff; + color: #222; +} + +h1, h2 { + color: #222; +} +h1 { + font-size: 48px; + margin-bottom: 10px; +} +h2 { + font-size: 24px; + margin-bottom: 10px; +} + +/* ========== Header / Navbar ========== */ +header { + display: flex; + justify-content: center; + align-items: center; +} + +#navbar-container { + display: flex; + flex-direction: row; + background-color: #f0f0f0; + max-width: 1200px; + justify-content: space-between; + align-items: center; + margin: 50px auto 0; + box-shadow: 0 2px 12px rgba(0,0,0,0.07); + border-radius: 10px; + height: 70px; + width: 70%; + box-sizing: border-box; + padding: 0 20px; +} + +#navbar { + list-style: none; + display: flex; + align-items: center; + gap: 18px; + margin: 0; + padding: 0; + flex: 1 1 auto; + justify-content: flex-end; +} + +#navbar > li { + position: relative; + white-space: nowrap; +} + +.dropdown { + display: none; + position: absolute; + background: #fff; + min-width: 160px; + box-shadow: 0 8px 16px rgba(0,0,0,0.1); + z-index: 1; +} + +#navbar li:hover > .dropdown { + display: block; +} + +.dropdown li { + padding: 10px 20px; +} + +.dropdown li a { + color: #222; + text-decoration: none; +} + +.dropdown li a:hover { + background: #f0f0f0; +} + +.no-underline { + text-decoration: none; + color: #000; +} + +.user-login { + display: flex; + align-items: center; + gap: 5px; + margin-right: 10px; +} + +.login-text { + display: flex; + flex-direction: column; + font-size: 14px; + line-height: 1.2; +} + +.login-text strong { + font-size: 15px; + color: #222; + font-weight: bold; + margin-left: 2px; +} + +#navbar .options { + position: relative; + display: inline-block; + cursor: pointer; +} + +#navbar .options::after { + content: ""; + display: block; + left: 30px; + right: 30%; + height: 4px; + background: #222; + border-radius: 2px; + opacity: 0; + transition: opacity 0.2s, left 0.2s, right 0.2s; +} + +#navbar .options:hover::after { + opacity: 1; + left: 15%; + right: 15%; +} + +#navbar .options:hover { + color: hsl(216, 82%, 36%); +} + +/* ========== Blog Hero ========== */ +.blog-hero { + background-color: #f5f5f5; + padding: 60px 20px; + text-align: center; +} +.blog-hero .hero-text h1 { + font-size: 52px; + margin-bottom: 10px; +} +.blog-hero .hero-text p { + font-size: 18px; +} + +/* ========== Liste des articles ========== */ +.blog-list { + padding: 60px 20px; + max-width: 1000px; + margin: 0 auto; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 40px; +} + +.blog-card { + background: #fff; + border-radius: 12px; + box-shadow: 0 2px 12px rgba(0,0,0,0.07); + overflow: hidden; + transition: transform 0.2s, box-shadow 0.2s; +} + +.blog-card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 24px rgba(0,0,0,0.1); +} + +.blog-card img { + width: 100%; + height: auto; + object-fit: cover; + max-height: 16rem; +} + +.blog-info { + padding: 20px; +} + +.blog-info h2 { + margin-bottom: 12px; + font-size: 22px; +} + +.blog-info p { + font-size: 16px; + margin-bottom: 15px; + color: #555; +} + +.blog-info .date { + font-size: 14px; + color: #999; +} + +/* ========== Footer ========== */ +footer { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + padding-top: 20px; +} +footer .col { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: 20px; +} +footer h4 { + font-size: 14px; + padding-bottom: 20px; +} +footer p { + font-size: 13px; + margin: 0 0 8px 0; +} +footer a { + font-size: 13px; + text-decoration: none; + color: #222; + margin-bottom: 10px; +} +footer .follow i { + color: #465b52; + padding-right: 4px; + cursor: pointer; +} +footer .install .row img { + border: 1px solid #8f253c; + border-radius: 6px; +} +footer .install img { + margin: 10px 0 15px 0; +} +footer .follow i:hover, footer a:hover { + color: #8f253c; +} +footer .copyright { + text-align: center; + width: 100%; + padding: 10px 0; +} + +/* ========== Responsive ========== */ +@media (max-width: 900px) { + #navbar-container { + width: 95%; + padding: 0 10px; + } + #navbar { + gap: 10px; + } + .blog-list { + gap: 20px; + } +} +#brand-name { + text-decoration: none; + font-size: 20px; + color:#222; + font-weight: bold; + margin-right: 40px; + margin-left: 10px; +} diff --git a/styles/login-page.css b/styles/login-page.css new file mode 100644 index 0000000..cb33ca2 --- /dev/null +++ b/styles/login-page.css @@ -0,0 +1,203 @@ +/* +VAriables #776f73,#cccccc,#8f253c + */ + +:root { + --couleur-1: #776f73; + --couleur-2: #cccccc; + --couleur-3: #8f253c; +} + + +/* === STYLES GLOBAUX === */ +body { + margin: 0; + font-family: 'Inter', 'Roboto', sans-serif; + background: linear-gradient(135deg, var(--couleur-1), var(--couleur-2)); + color: var(--couleur-3); + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; +} + +/* === PAGE CONTAINER === */ +.login-page { + width: 90%; + max-width: 1100px; + background: var(--couleur-2); + border-radius: 20px; + box-shadow: 0 10px 30px var(--couleur-3); + display: flex; + flex-direction: column; + overflow: hidden; + animation: fadeIn 1s ease; +} + +/* === HEADER === */ +.login-page h1 { + text-align: center; + padding: 2rem 1rem; + color: var(--couleur-3); + font-size: 1.8rem; + border-bottom: 1px solid var(--couleur-2); + background: var(--couleur-2); +} + +/* === MAIN CONTENT === */ +.container { + display: flex; + flex-direction: row; + padding: 2rem; + gap: 2rem; +} + +.login-grid { + display: grid; + grid-template-columns: 1fr 1fr; + width: 100%; + gap: 2rem; +} + +/* === SECTION GAUCHE : PRÉSENTATION === */ +.presentation-login { + background: linear-gradient(135deg, #dbeafe, #eff6ff); + border-radius: 16px; + padding: 2rem; + display: flex; + flex-direction: column; + justify-content: space-between; + text-align: center; + box-shadow: inset 0 0 15px var(--couleur-3); +} + +.presentation-login .descrition { + font-size: 1rem; + line-height: 1.6; + color: var(--couleur-3); + margin-bottom: 2rem; + display: block; +} + +.presentation-login div { + display: flex; + align-items: center; + justify-content: center; + gap: 0.7rem; + font-weight: 600; + color: var(--couleur-3); + font-size: 1.1rem; +} + +.presentation-login svg { + stroke: var(--couleur-3); + transition: transform 0.3s ease; +} + +.presentation-login div:hover svg { + transform: translateX(5px); +} + +/* === FORMULAIRE === */ +.login-form { + background: var(--couleur-2); + border-radius: 16px; + padding: 2rem 2.5rem; + display: flex; + flex-direction: column; + justify-content: center; + box-shadow: 0 2px 10px rgba(0, 50, 150, 0.05); +} + +.login-form h3 { + color: var(--couleur-3); + text-align: center; + margin-bottom: 1.5rem; + font-size: 1.4rem; +} + +.formGroup { + display: flex; + flex-direction: column; + gap: 1.2rem; +} + +mat-form-field, input { + width: 100%; +} + +input { + border: 1px solid #cbd5e1; + border-radius: 10px; + padding: 0.8rem 1rem; + font-size: 1rem; + transition: all 0.3s ease; + outline: none; +} + +input:focus { + border-color: var(--couleur-3); + box-shadow: 0 0 0 3px var(--couleur-1); +} + +/* === BOUTONS === */ +button { + padding: 0.8rem 1rem; + border: none; + border-radius: 10px; + cursor: pointer; + font-weight: 600; + font-size: 1rem; + transition: all 0.3s ease; +} + +button[type="submit"] { + background: var(--couleur-3); + color: var(--couleur-1); + margin-top: 1rem; +} + +button[type="submit"]:hover { + background: var(--couleur-3); +} + +.google-btn { + display: flex; + align-items: center; + justify-content: center; + gap: 0.8rem; + background: var(--couleur-2); + color: var(--couleur-1); + border: 1px solid var(--couleur-1); + margin-top: 1rem; +} + +.google-btn:hover { + background: var(--couleur-2); +} + +.google-icon { + width: 20px; + height: 20px; +} + +/* === ANIMATIONS === */ +@keyframes fadeIn { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } +} + +/* === RESPONSIVE === */ +@media (max-width: 900px) { + .login-grid { + grid-template-columns: 1fr; + } + + .presentation-login { + order: 2; + } + + .login-form { + order: 1; + } +} diff --git a/styles/mon-compte.css b/styles/mon-compte.css new file mode 100644 index 0000000..baa8d53 --- /dev/null +++ b/styles/mon-compte.css @@ -0,0 +1,111 @@ +/* Reset */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +/* Couleurs principales */ +:root { + --primary: #776f73; + --secondary: #8f253c; + --light: #cccccc; + --white: #fff; +} + +/* Global */ +body { + font-family: Arial, sans-serif; + display: flex; + background-color: var(--light); +} + +/* Header */ +header { + position: fixed; + top: 0; + left: 200px; + right: 0; + background: var(--primary); + color: var(--white); + padding: 1rem; + text-align: center; + z-index: 10; +} + +/* Sidebar */ +.sidebar { + width: 200px; + background: var(--secondary); + min-height: 100vh; + position: fixed; + top: 0; + left: 0; + padding-top: 5rem; +} + +.sidebar ul { + list-style: none; +} + +.sidebar li { + margin: 1rem 0; +} + +.sidebar a { + color: var(--white); + text-decoration: none; + padding: 0.5rem 1rem; + display: block; +} + +.sidebar a:hover { + background: var(--primary); +} + +/* Main */ +main { + margin-left: 200px; + padding: 7rem 2rem 2rem 2rem; + width: 100%; +} + +.card { + background: var(--white); + padding: 1.5rem; + margin-bottom: 1.5rem; + border-radius: 8px; + box-shadow: 0 2px 5px rgba(0,0,0,0.1); +} + +.card h2 { + margin-bottom: 1rem; + color: var(--secondary); +} + +/* Table */ +table { + width: 100%; + border-collapse: collapse; + margin-top: 1rem; +} + +table th, table td { + padding: 0.8rem; + border: 1px solid var(--light); + text-align: left; +} + +table th { + background: var(--primary); + color: var(--white); +} + +/* Footer */ +footer { + background: var(--primary); + color: var(--white); + text-align: center; + padding: 1rem; + margin-left: 200px; +} diff --git a/styles/paiement.css b/styles/paiement.css new file mode 100644 index 0000000..acbf525 --- /dev/null +++ b/styles/paiement.css @@ -0,0 +1,213 @@ +body { +font-family: "Poppins", sans-serif; +background-color: #cccccc; +color: #333; +margin: 0; +padding: 0; +} + +/* HEADER */ +.main-header { +background-color: #8f253c; +color: white; +display: flex; +justify-content: space-between; +align-items: center; +padding: 15px 50px; +} + +.main-header a { +color: white; +text-decoration: none; +font-weight: bold; +} + +.main-header ul { +list-style: none; +display: flex; +gap: 25px; +} + +.main-header ul li a:hover { +text-decoration: underline; +} + +/* MAIN LAYOUT */ +.payment-container { +display: flex; +justify-content: space-between; +margin: 40px auto; +width: 90%; +max-width: 1200px; +gap: 40px; +} + +/* FORM SECTION */ +.payment-form { +flex: 2; +background: white; +padding: 30px; +border-radius: 10px; +box-shadow: 0 2px 8px rgba(0,0,0,0.1); +} + +.payment-form h1 { +color: #8f253c; +text-align: center; +margin-bottom: 20px; +} + +.payment-form h2 { +color: #776f73; +margin-top: 25px; +border-bottom: 2px solid #cccccc; +padding-bottom: 5px; +} + +.form-group { +margin-top: 15px; +display: flex; +flex-direction: column; +} + +.form-group label { +font-weight: 600; +margin-bottom: 5px; +} + +.form-group input, +.form-group select { +padding: 10px; +border: 1px solid #aaa; +border-radius: 5px; +} + +.form-inline { +display: flex; +gap: 20px; +} + +.btn-validate { +display: block; +width: 100%; +background-color: #8f253c; +color: white; +border: none; +padding: 15px; +border-radius: 8px; +font-size: 16px; +margin-top: 25px; +cursor: pointer; +} + +.btn-validate:hover { +background-color: #776f73; +} + +/* ORDER SUMMARY */ +.order-summary { +flex: 1; +background: white; +padding: 20px; +border-radius: 10px; +box-shadow: 0 2px 8px rgba(0,0,0,0.1); +} + +.order-summary h2 { +color: #8f253c; +margin-bottom: 15px; +text-align: center; +} + +.order-summary table { +width: 100%; +border-collapse: collapse; +} + +.order-summary th, +.order-summary td { +border-bottom: 1px solid #ccc; +padding: 10px; +text-align: center; +} + +.order-summary .total { +font-weight: bold; +color: #8f253c; +} + +/* FOOTER */ +.main-footer { +background-color: #776f73; +color: white; +text-align: center; +padding: 20px; +margin-top: 40px; +} + +@media screen and (max-width: 900px) { +.payment-container { +flex-direction: column; +} +} +/* PAGE DE CONFIRMATION */ +.success-container { +display: flex; +justify-content: center; +align-items: center; +height: 70vh; +} + +.success-box { +background-color: white; +border-radius: 10px; +padding: 50px; +text-align: center; +box-shadow: 0 2px 10px rgba(0,0,0,0.15); +max-width: 600px; +} + +.success-box h1 { +color: #8f253c; +margin-bottom: 20px; +} + +.success-box p { +color: #333; +font-size: 18px; +margin-bottom: 30px; +} + +.btn-return { +display: inline-block; +background-color: #8f253c; +color: white; +padding: 12px 25px; +border-radius: 8px; +text-decoration: none; +font-weight: bold; +} + +.btn-return:hover { +background-color: #776f73; +} + +/* ANIMATION DE CONFIRMATION */ +@keyframes fadePop { +0% { +opacity: 0; +transform: scale(0.8); +} +60% { +opacity: 1; +transform: scale(1.05); +} +100% { +opacity: 1; +transform: scale(1); +} +} + +.success-box { +animation: fadePop 0.8s ease-out; +} diff --git a/styles/prodDetails.css b/styles/prodDetails.css index 7822d2b..25680e7 100644 --- a/styles/prodDetails.css +++ b/styles/prodDetails.css @@ -1,36 +1,41 @@ /* Container */ +body{ + display: flex; + flex-direction: column; + align-items: center; +} .productDetailContainer { display: flex; flex-direction: column; - - - - max-width: 1200px; - + align-items: center; + width: 100%; background-color:#cccccc; - border-radius: 12px; + position: relative; + } .mainProductSection{ display: flex; gap: 2rem; flex: 1; + } /* Image Section */ .imageSection { flex: 1; - background-image: url("../assets/images/iphone.webp"); /* default */ + background-image: url("../assets/images/Services\ \(10\).png"); /* default */ background-size: cover; background-position: center; - border-radius: 12px; + z-index: 0; border: 2px solid #cccccc; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; - padding: 1rem; - min-height: 500px; + + + min-height:500px; } .thumbnailImages { @@ -54,6 +59,7 @@ display: flex; gap: 2rem; justify-content: center; + width: 100%; background-color: #333; } @@ -62,28 +68,43 @@ display: flex; flex-direction: column; align-items: center; + padding-top: 10px; + bottom: 0; } .infoButtons{ display: flex; - gap: 4rem; + gap: 1rem; flex-direction: row; align-items: center; } - -.thumbnail:hover { - border: 2px solid #8f253c; +.infoButtons button{ + background-color: #ffffff95; + border-top-left-radius: 5px; + border-top-right-radius: 5px; + padding: 0.5rem 1rem; + border: none; + color: #000000; + font-size: 1rem; + cursor: pointer; + } - -.thumbnail.active { - border: 2px solid #776f73; +.infoButtons button:hover{ + background-color: #333; + color: #fff; +} +.infoButtons button.active{ + background-color: #333; + color: #fff; } + /* Info Section */ .productInfoSection { flex: 1; display: flex; flex-direction: column; gap: 1.5rem; + background-color: #cccccc; } .productTitle { diff --git a/styles/promotions.css b/styles/promotions.css new file mode 100644 index 0000000..416db7f --- /dev/null +++ b/styles/promotions.css @@ -0,0 +1,330 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: 'Poppins', sans-serif; +} + +body { + width: 100%; + background-color: #fff; + color: #222; +} + +h1, h2, h3 { + color: #222; +} + +h1 { + font-size: 48px; + margin-bottom: 10px; +} +h2 { + font-size: 36px; + margin-bottom: 20px; +} +h3 { + font-size: 20px; + margin-bottom: 8px; +} + +/* ========== Header et Navbar ========== */ +header { + display: flex; + justify-content: center; + align-items: center; +} + +#navbar-container { + display: flex; + flex-direction: row; + background-color: #f0f0f0; + max-width: 1200px; + justify-content: space-between; + align-items: center; + margin: 50px auto 0; + box-shadow: 0 2px 12px rgba(0,0,0,0.07); + border-radius: 10px; + height: 70px; + width: 70%; + box-sizing: border-box; + padding: 0 20px; +} + +#navbar { + list-style: none; + position: relative; + display: flex; + flex-direction: row; + align-items: center; + gap: 18px; + margin: 0; + padding: 0; + flex: 1 1 auto; + justify-content: flex-end; + flex-wrap: wrap; +} + +#navbar > li { + display: inline-block; + position: relative; + white-space: nowrap; +} + +.dropdown { + display: none; + position: absolute; + background: #fff; + min-width: 160px; + box-shadow: 0 8px 16px rgba(0,0,0,0.1); + z-index: 1; +} + +#navbar li:hover > .dropdown { + display: block; +} + +.dropdown li { + display: block; + padding: 10px 20px; +} + +.dropdown li a { + color: #222; + text-decoration: none; + display: block; +} + +.dropdown li a:hover { + background: #f0f0f0; +} + +.no-underline { + text-decoration: none; + color: #000; +} + +.user-login { + display: flex; + align-items: center; + gap: 5px; + margin-right: 10px; +} + +.login-text { + display: flex; + flex-direction: column; + font-size: 14px; + line-height: 1.2; + color: #000; +} + +.login-text strong { + font-size: 15px; + color: #222; + font-weight: bold; + margin-left: 2px; +} +#brand-name { + text-decoration: none; + font-size: 20px; + color:#222; + font-weight: bold; + margin-right: 40px; + margin-left: 10px; +} + +#navbar .options { + position: relative; + display: inline-block; + cursor: pointer; +} + +#navbar .options::after { + content: ""; + display: block; + left: 30px; + right: 30%; + height: 4px; + background: #222; + border-radius: 2px; + opacity: 0; + transition: opacity 0.2s, left 0.2s, right 0.2s; +} + +#navbar .options:hover::after { + opacity: 1; + left: 15%; + right: 15%; +} + +#navbar .options:hover { + color: hsl(216, 82%, 36%); +} + +/* ========== Section promo-hero ========== */ +.promo-hero { + background-color: #f0f0f0; + padding: 60px 20px; + text-align: center; +} +.promo-hero .promo-banner h1 { + font-size: 52px; + margin-bottom: 10px; +} +.promo-hero .promo-banner p { + font-size: 18px; +} + +/* ========== Offres limitées (compte à rebours) ========== */ +.limited-offer { + padding: 40px 20px; + text-align: center; + background-color: #fff; +} +.limited-offer h2 { + margin-bottom: 30px; +} +.countdown-container { + display: flex; + justify-content: center; + gap: 30px; + flex-wrap: wrap; +} +.time-box { + background: #f5f5f5; + padding: 20px; + border-radius: 8px; + min-width: 80px; + display: flex; + flex-direction: column; + align-items: center; +} +.time-box .time { + font-size: 32px; + font-weight: 700; +} +.time-box .label { + font-size: 14px; + margin-top: 5px; + color: #555; +} + +/* ========== Grille de produits en promo ========== */ +.sale-grid { + padding: 60px 20px; + background-color: #fafafa; + text-align: center; +} +.sale-grid h2 { + margin-bottom: 40px; +} +.products-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); + gap: 30px; + max-width: 1000px; + margin: 0 auto; +} +.product-card { + background: #fff; + border-radius: 12px; + box-shadow: 0 2px 12px rgba(0,0,0,0.07); + overflow: hidden; + transition: transform 0.2s, box-shadow 0.2s; +} +.product-card:hover { + transform: translateY(-6px); + box-shadow: 0 8px 24px rgba(0,0,0,0.1); +} +.product-card img { + width: 100%; + height: auto; + max-height: 9rem; + object-fit: cover; +} +.product-info { + padding: 16px; +} +.product-info h3 { + margin-bottom: 10px; +} +.original-price { + text-decoration: line-through; + color: #999; + margin-bottom: 8px; +} +.promo-price { + color: #8f253c; + font-size: 1.25rem; + font-weight: bold; +} + + +/* ========== Footer ========== */ +/* Tu peux simplement copier les styles du footer de ta home page ici */ +footer { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + padding-top: 20px; +} +footer .col { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: 20px; +} +footer h4 { + font-size: 14px; + padding-bottom: 20px; +} +footer p { + font-size: 13px; + margin: 0 0 8px 0; +} +footer a { + font-size: 13px; + text-decoration: none; + color: #222; + margin-bottom: 10px; +} +footer .follow i { + color: #465b52; + padding-right: 4px; + cursor: pointer; +} +footer .install .row img { + border: 1px solid #8f253c; + border-radius: 6px; +} +footer .install img { + margin: 10px 0 15px 0; +} +footer .follow i:hover, footer a:hover { + color: #8f253c; +} +footer .copyright { + text-align: center; + width: 100%; + padding: 10px 0; +} + +/* ========== Adaptations responsive ========== */ +@media (max-width: 900px) { + #navbar-container { + width: 95%; + padding: 0 10px; + } + #navbar { + gap: 10px; + } + .countdown-container { + gap: 15px; + } + .products-container, .top-deals-container { + gap: 20px; + } +} diff --git a/styles/register-page.css b/styles/register-page.css new file mode 100644 index 0000000..cb33ca2 --- /dev/null +++ b/styles/register-page.css @@ -0,0 +1,203 @@ +/* +VAriables #776f73,#cccccc,#8f253c + */ + +:root { + --couleur-1: #776f73; + --couleur-2: #cccccc; + --couleur-3: #8f253c; +} + + +/* === STYLES GLOBAUX === */ +body { + margin: 0; + font-family: 'Inter', 'Roboto', sans-serif; + background: linear-gradient(135deg, var(--couleur-1), var(--couleur-2)); + color: var(--couleur-3); + display: flex; + align-items: center; + justify-content: center; + min-height: 100vh; +} + +/* === PAGE CONTAINER === */ +.login-page { + width: 90%; + max-width: 1100px; + background: var(--couleur-2); + border-radius: 20px; + box-shadow: 0 10px 30px var(--couleur-3); + display: flex; + flex-direction: column; + overflow: hidden; + animation: fadeIn 1s ease; +} + +/* === HEADER === */ +.login-page h1 { + text-align: center; + padding: 2rem 1rem; + color: var(--couleur-3); + font-size: 1.8rem; + border-bottom: 1px solid var(--couleur-2); + background: var(--couleur-2); +} + +/* === MAIN CONTENT === */ +.container { + display: flex; + flex-direction: row; + padding: 2rem; + gap: 2rem; +} + +.login-grid { + display: grid; + grid-template-columns: 1fr 1fr; + width: 100%; + gap: 2rem; +} + +/* === SECTION GAUCHE : PRÉSENTATION === */ +.presentation-login { + background: linear-gradient(135deg, #dbeafe, #eff6ff); + border-radius: 16px; + padding: 2rem; + display: flex; + flex-direction: column; + justify-content: space-between; + text-align: center; + box-shadow: inset 0 0 15px var(--couleur-3); +} + +.presentation-login .descrition { + font-size: 1rem; + line-height: 1.6; + color: var(--couleur-3); + margin-bottom: 2rem; + display: block; +} + +.presentation-login div { + display: flex; + align-items: center; + justify-content: center; + gap: 0.7rem; + font-weight: 600; + color: var(--couleur-3); + font-size: 1.1rem; +} + +.presentation-login svg { + stroke: var(--couleur-3); + transition: transform 0.3s ease; +} + +.presentation-login div:hover svg { + transform: translateX(5px); +} + +/* === FORMULAIRE === */ +.login-form { + background: var(--couleur-2); + border-radius: 16px; + padding: 2rem 2.5rem; + display: flex; + flex-direction: column; + justify-content: center; + box-shadow: 0 2px 10px rgba(0, 50, 150, 0.05); +} + +.login-form h3 { + color: var(--couleur-3); + text-align: center; + margin-bottom: 1.5rem; + font-size: 1.4rem; +} + +.formGroup { + display: flex; + flex-direction: column; + gap: 1.2rem; +} + +mat-form-field, input { + width: 100%; +} + +input { + border: 1px solid #cbd5e1; + border-radius: 10px; + padding: 0.8rem 1rem; + font-size: 1rem; + transition: all 0.3s ease; + outline: none; +} + +input:focus { + border-color: var(--couleur-3); + box-shadow: 0 0 0 3px var(--couleur-1); +} + +/* === BOUTONS === */ +button { + padding: 0.8rem 1rem; + border: none; + border-radius: 10px; + cursor: pointer; + font-weight: 600; + font-size: 1rem; + transition: all 0.3s ease; +} + +button[type="submit"] { + background: var(--couleur-3); + color: var(--couleur-1); + margin-top: 1rem; +} + +button[type="submit"]:hover { + background: var(--couleur-3); +} + +.google-btn { + display: flex; + align-items: center; + justify-content: center; + gap: 0.8rem; + background: var(--couleur-2); + color: var(--couleur-1); + border: 1px solid var(--couleur-1); + margin-top: 1rem; +} + +.google-btn:hover { + background: var(--couleur-2); +} + +.google-icon { + width: 20px; + height: 20px; +} + +/* === ANIMATIONS === */ +@keyframes fadeIn { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } +} + +/* === RESPONSIVE === */ +@media (max-width: 900px) { + .login-grid { + grid-template-columns: 1fr; + } + + .presentation-login { + order: 2; + } + + .login-form { + order: 1; + } +}