header.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <!DOCTYPE html>
  2. <html lang="fr">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Map Generator</title>
  7. <?php AssetLoader::loadCSS(['/assets/bootstrap.min.css', '/assets/bootstrap-icons.min.css']); ?>
  8. <style>
  9. /* Layout principal avec flexbox pour footer en bas */
  10. body {
  11. display: flex;
  12. flex-direction: column;
  13. min-height: 100vh;
  14. margin: 0;
  15. padding: 0;
  16. }
  17. #global-header {
  18. position: fixed;
  19. top: 0;
  20. left: 0;
  21. right: 0;
  22. z-index: 1030;
  23. }
  24. .sidebar {
  25. position: fixed;
  26. top: 56px; /* Hauteur de la navbar */
  27. left: 0;
  28. width: 250px;
  29. height: calc(100vh - 56px);
  30. background-color: #343a40;
  31. color: white;
  32. overflow-y: auto;
  33. z-index: 1000;
  34. }
  35. .main-content {
  36. margin-left: 250px;
  37. margin-top: 15px; /* Espace pour le header fixe + padding */
  38. padding-top: 20px;
  39. flex: 1; /* Prend tout l'espace disponible */
  40. }
  41. #global-footer {
  42. margin-left: 250px; /* Même marge que main-content */
  43. margin-top: auto; /* Pousse le footer en bas */
  44. }
  45. .sidebar .nav-link {
  46. color: rgba(255, 255, 255, 0.75);
  47. padding: 10px 20px;
  48. }
  49. .sidebar .nav-link:hover {
  50. color: white;
  51. background-color: rgba(255, 255, 255, 0.1);
  52. }
  53. .sidebar .nav-link.active {
  54. color: white;
  55. background-color: #0d6efd;
  56. }
  57. .tool-group {
  58. border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  59. margin-bottom: 10px;
  60. padding-bottom: 10px;
  61. }
  62. .tool-group h6 {
  63. color: rgba(255, 255, 255, 0.6);
  64. text-transform: uppercase;
  65. font-size: 0.8rem;
  66. margin: 15px 20px 5px 20px;
  67. }
  68. .canvas-container {
  69. position: relative;
  70. border-radius: 8px;
  71. overflow: hidden;
  72. }
  73. .tool-active {
  74. background-color: #0d6efd !important;
  75. color: white !important;
  76. }
  77. .color-swatch.selected {
  78. border: 2px solid white !important;
  79. }
  80. .layer-item {
  81. background-color: rgba(255, 255, 255, 0.05);
  82. border-radius: 4px;
  83. margin-bottom: 2px;
  84. }
  85. .layer-item:hover {
  86. background-color: rgba(255, 255, 255, 0.1);
  87. }
  88. </style>
  89. </head>
  90. <body>
  91. <header id="global-header">
  92. <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  93. <div class="container-fluid">
  94. <a class="navbar-brand" href="#">
  95. <i class="bi bi-geo-alt-fill me-2"></i>
  96. Map Generator
  97. </a>
  98. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
  99. <span class="navbar-toggler-icon"></span>
  100. </button>
  101. <div class="collapse navbar-collapse" id="navbarNav">
  102. <ul class="navbar-nav ms-auto">
  103. <li class="nav-item">
  104. <a class="nav-link" href="#" id="saveBtn">
  105. <i class="bi bi-save me-1"></i>Sauvegarder
  106. </a>
  107. </li>
  108. <li class="nav-item">
  109. <a class="nav-link" href="#" id="exportBtn">
  110. <i class="bi bi-download me-1"></i>Exporter
  111. </a>
  112. </li>
  113. <li class="nav-item dropdown">
  114. <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
  115. <i class="bi bi-gear me-1"></i>Paramètres
  116. </a>
  117. <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
  118. <li><a class="dropdown-item" href="#">Préférences</a></li>
  119. <li><a class="dropdown-item" href="#">Raccourcis</a></li>
  120. <li><hr class="dropdown-divider"></li>
  121. <li><a class="dropdown-item" href="#">À propos</a></li>
  122. </ul>
  123. </li>
  124. </ul>
  125. </div>
  126. </div>
  127. </nav>
  128. </header>
  129. <!-- Barre latérale des outils -->
  130. <div class="sidebar">
  131. <nav class="nav flex-column">
  132. <!-- Gestion des projets -->
  133. <div class="tool-group">
  134. <h6><i class="bi bi-folder me-1"></i>Projet</h6>
  135. <a class="nav-link" href="#" id="newMap">
  136. <i class="bi bi-plus-circle me-2"></i>Nouvelle carte
  137. </a>
  138. <a class="nav-link" href="#" id="openMap">
  139. <i class="bi bi-folder-open me-2"></i>Ouvrir carte
  140. </a>
  141. <a class="nav-link" href="#" id="saveProject">
  142. <i class="bi bi-save me-2"></i>Sauvegarder projet
  143. </a>
  144. </div>
  145. <!-- Outils de dessin -->
  146. <div class="tool-group">
  147. <h6><i class="bi bi-brush me-1"></i>Outils</h6>
  148. <a class="nav-link active" href="#" id="brushTool">
  149. <i class="bi bi-brush me-2"></i>Pinceau
  150. </a>
  151. <a class="nav-link" href="#" id="eraserTool">
  152. <i class="bi bi-eraser me-2"></i>Gomme
  153. </a>
  154. <a class="nav-link" href="#" id="fillTool">
  155. <i class="bi bi-paint-bucket me-2"></i>Remplissage
  156. </a>
  157. <a class="nav-link" href="#" id="lineTool">
  158. <i class="bi bi-dash me-2"></i>Ligne
  159. </a>
  160. <a class="nav-link" href="#" id="rectangleTool">
  161. <i class="bi bi-square me-2"></i>Rectangle
  162. </a>
  163. <a class="nav-link" href="#" id="circleTool">
  164. <i class="bi bi-circle me-2"></i>Cercle
  165. </a>
  166. <a class="nav-link" href="#" id="selectTool">
  167. <i class="bi bi-cursor me-2"></i>Sélection
  168. </a>
  169. </div>
  170. <!-- Palette de couleurs -->
  171. <div class="tool-group">
  172. <h6><i class="bi bi-palette me-1"></i>Couleurs</h6>
  173. <div class="px-3">
  174. <div class="color-palette d-flex flex-wrap gap-1 mb-2">
  175. <div class="color-swatch" style="background-color: #000000; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Noir"></div>
  176. <div class="color-swatch" style="background-color: #ffffff; width: 20px; height: 20px; border-radius: 3px; border: 1px solid #ccc; cursor: pointer;" title="Blanc"></div>
  177. <div class="color-swatch" style="background-color: #ff0000; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Rouge"></div>
  178. <div class="color-swatch" style="background-color: #00ff00; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Vert"></div>
  179. <div class="color-swatch" style="background-color: #0000ff; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Bleu"></div>
  180. <div class="color-swatch" style="background-color: #ffff00; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Jaune"></div>
  181. <div class="color-swatch" style="background-color: #ff00ff; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Magenta"></div>
  182. <div class="color-swatch" style="background-color: #00ffff; width: 20px; height: 20px; border-radius: 3px; cursor: pointer;" title="Cyan"></div>
  183. </div>
  184. <input type="color" class="form-control form-control-sm" id="customColor" value="#000000">
  185. </div>
  186. </div>
  187. <!-- Calques -->
  188. <div class="tool-group">
  189. <h6><i class="bi bi-layers me-1"></i>Calques</h6>
  190. <div class="px-3">
  191. <button class="btn btn-outline-light btn-sm w-100 mb-2" id="addLayer">
  192. <i class="bi bi-plus me-1"></i>Ajouter calque
  193. </button>
  194. <div id="layersList">
  195. <div class="layer-item d-flex align-items-center justify-content-between p-1">
  196. <span>Calque 1</span>
  197. <div>
  198. <i class="bi bi-eye me-1" style="cursor: pointer;"></i>
  199. <i class="bi bi-trash" style="cursor: pointer;"></i>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. <!-- Outils avancés -->
  206. <div class="tool-group">
  207. <h6><i class="bi bi-tools me-1"></i>Avancé</h6>
  208. <a class="nav-link" href="#" id="zoomIn">
  209. <i class="bi bi-zoom-in me-2"></i>Zoom +
  210. </a>
  211. <a class="nav-link" href="#" id="zoomOut">
  212. <i class="bi bi-zoom-out me-2"></i>Zoom -
  213. </a>
  214. <a class="nav-link" href="#" id="gridToggle">
  215. <i class="bi bi-grid me-2"></i>Grille
  216. </a>
  217. <a class="nav-link" href="#" id="undoBtn">
  218. <i class="bi bi-arrow-counterclockwise me-2"></i>Annuler
  219. </a>
  220. <a class="nav-link" href="#" id="redoBtn">
  221. <i class="bi bi-arrow-clockwise me-2"></i>Rétablir
  222. </a>
  223. </div>
  224. </nav>
  225. </div>
  226. <div class="main-content">
  227. <!-- Contenu principal de l'application -->
  228. </div>
  229. <?php AssetLoader::loadJS(['/assets/bootstrap.bundle.min.js']); ?>
  230. </body>
  231. </html>