diff --git a/.gitignore b/.gitignore
index e9241bf..62714e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -126,3 +126,4 @@ logs/*
logs/*.log
pb/data/*
+src/environments/environment.development.ts
diff --git a/package-lock.json b/package-lock.json
index 91f4d73..9cd29df 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -39,6 +39,9 @@
"@angular-devkit/build-angular": "^17.0.1",
"@angular/cli": "^17.0.1",
"@angular/compiler-cli": "^17.0.0",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.10",
+ "@tailwindcss/line-clamp": "^0.4.4",
"@types/express": "^4.17.17",
"@types/jest": "^30.0.0",
"@types/node": "^18.18.0",
@@ -6193,6 +6196,39 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@tailwindcss/aspect-ratio": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz",
+ "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@tailwindcss/forms": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz",
+ "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mini-svg-data-uri": "^1.2.3"
+ },
+ "peerDependencies": {
+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1"
+ }
+ },
+ "node_modules/@tailwindcss/line-clamp": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz",
+ "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
"node_modules/@tootallnate/once": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz",
@@ -14947,6 +14983,16 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/mini-svg-data-uri": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",
+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mini-svg-data-uri": "cli.js"
+ }
+ },
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
diff --git a/package.json b/package.json
index 26b5cf8..94d8ad0 100644
--- a/package.json
+++ b/package.json
@@ -56,6 +56,9 @@
"@angular-devkit/build-angular": "^17.0.1",
"@angular/cli": "^17.0.1",
"@angular/compiler-cli": "^17.0.0",
+ "@tailwindcss/aspect-ratio": "^0.4.2",
+ "@tailwindcss/forms": "^0.5.10",
+ "@tailwindcss/line-clamp": "^0.4.4",
"@types/express": "^4.17.17",
"@types/jest": "^30.0.0",
"@types/node": "^18.18.0",
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 2396764..e185499 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1,7 +1,17 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/app.component.scss b/src/app/app.component.scss
index ac985b6..eeac3d1 100644
--- a/src/app/app.component.scss
+++ b/src/app/app.component.scss
@@ -1,21 +1,95 @@
+/* Container principal responsive */
+.app-container {
+ @apply antialiased;
+ min-height: 100vh;
+ min-height: 100dvh; /* Support pour les navigateurs modernes */
+}
+
+/* Wrapper de contenu avec contraintes responsive */
+.content-wrapper {
+ @apply w-full mx-auto;
+ max-width: 100%;
+}
+
+/* Styles responsive pour les différents breakpoints */
+@media (min-width: 640px) {
+ .content-wrapper {
+ max-width: 100%;
+ }
+}
+
+@media (min-width: 768px) {
+ .content-wrapper {
+ max-width: 100%;
+ }
+}
+
+@media (min-width: 1024px) {
+ .content-wrapper {
+ max-width: 1280px; /* max-w-7xl */
+ }
+}
+
+@media (min-width: 1280px) {
+ .content-wrapper {
+ max-width: 1536px; /* max-w-screen-2xl */
+ }
+}
+
+/* Assure que le router-outlet s'affiche correctement */
+router-outlet + * {
+ @apply w-full;
+}
+
+/* Espacement responsive pour éviter le chevauchement avec la navbar fixe */
main {
- display: flex;
- flex-direction: column;
- min-height: 100vh; /* Minimum 100% de la hauteur de la fenêtre */
+ padding-top: 4rem; /* 64px - hauteur navbar mobile */
}
-.content {
- flex: 1; /* Cette zone grandit pour remplir l'espace restant */
- padding: 20px;
- display: flex;
- align-items: center;
- justify-content: center;
+@media (min-width: 640px) {
+ main {
+ padding-top: 5rem; /* 80px - hauteur navbar desktop */
+ }
}
-app-nav-bar {
- flex-shrink: 0; /* Le header ne doit pas rétrécir */
+/* Smooth scroll pour toute l'application */
+html {
+ scroll-behavior: smooth;
}
-app-footer {
- flex-shrink: 0; /* Le footer ne doit pas rétrécir */
+/* Amélioration de la lisibilité du texte */
+body {
+ @apply text-gray-900 dark:text-gray-100;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+/* Container générique pour le contenu des pages */
+.page-container {
+ @apply w-full max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6 sm:py-8 lg:py-12;
+}
+
+/* Section générique */
+.page-section {
+ @apply w-full mb-8 sm:mb-12 lg:mb-16;
+}
+
+/* Titre de page responsive */
+.page-title {
+ @apply text-2xl sm:text-3xl lg:text-4xl font-bold text-gray-900 dark:text-white mb-4 sm:mb-6;
+}
+
+/* Sous-titre de page */
+.page-subtitle {
+ @apply text-lg sm:text-xl text-gray-600 dark:text-gray-400 mb-6 sm:mb-8;
+}
+
+/* Card responsive */
+.card {
+ @apply bg-white dark:bg-gray-800 rounded-lg shadow-md p-4 sm:p-6 lg:p-8;
+}
+
+/* Transition pour le changement de thème */
+* {
+ @apply transition-colors duration-200;
}
diff --git a/src/app/shared/components/footer/footer.component.html b/src/app/shared/components/footer/footer.component.html
index f4c1775..91d2e40 100644
--- a/src/app/shared/components/footer/footer.component.html
+++ b/src/app/shared/components/footer/footer.component.html
@@ -1,86 +1,128 @@
-