diff --git a/src/styles/searchBar.css b/src/styles/searchBar.css new file mode 100644 index 0000000..5a4c236 --- /dev/null +++ b/src/styles/searchBar.css @@ -0,0 +1,160 @@ +:root { + --sw-search-bg-dark: rgba(6, 12, 30, 0.96); + --sw-search-bg-light: rgba(255, 255, 255, 0.96); + + --sw-search-text-dark: #f9fafb; + --sw-search-text-light: #111827; + + --sw-search-placeholder-dark: #6b7280; + --sw-search-placeholder-light: #9ca3af; + + --sw-search-ring: rgba(96, 165, 250, 0.65); +} + +/* Conteneur de la barre de recherche au-dessus de la map */ +.sw-search-bar { + position: absolute; + top: 96px; + left: 50%; + transform: translateX(-50%); + z-index: 50; + width: min(75vw, 520px); /* <<< 75% de l’écran max 520px */ +} + +/* Pour les grands écrans on garde le même comportement */ +@media (min-width: 1024px) { + .sw-search-bar { + width: min(75vw, 520px); + } +} + +.sw-search-inner { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.55rem 1.1rem; + border-radius: 999px; + border: 1px solid rgba(148, 163, 184, 0.25); + box-shadow: + 0 18px 45px rgba(0, 0, 0, 0.75), + 0 0 0 1px rgba(15, 23, 42, 0.9); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); +} + +/* Thèmes : dark + blue = texte clair, light = texte foncé */ +html[data-theme="dark"] .sw-search-inner, +html[data-theme="blue"] .sw-search-inner { + background: var(--sw-search-bg-dark); + color: var(--sw-search-text-dark); +} + +html[data-theme="light"] .sw-search-inner { + background: var(--sw-search-bg-light); + color: var(--sw-search-text-light); +} + +/* Input */ +.sw-search-input { + flex: 1 1 auto; + min-width: 0; + border: none; + outline: none; + background: transparent; + font-size: 0.95rem; +} + +/* Couleurs du texte dans l’input suivant le thème */ +html[data-theme="dark"] .sw-search-input, +html[data-theme="blue"] .sw-search-input { + color: var(--sw-search-text-dark); +} + +html[data-theme="light"] .sw-search-input { + color: var(--sw-search-text-light); +} + +/* Placeholder suivant le thème */ +html[data-theme="dark"] .sw-search-input::placeholder, +html[data-theme="blue"] .sw-search-input::placeholder { + color: var(--sw-search-placeholder-dark); +} + +html[data-theme="light"] .sw-search-input::placeholder { + color: var(--sw-search-placeholder-light); +} + +/* Petit glow au focus */ +.sw-search-inner:focus-within { + box-shadow: + 0 18px 45px rgba(0, 0, 0, 0.85), + 0 0 0 1px var(--sw-search-ring), + 0 0 0 6px rgba(37, 99, 235, 0.35); +} + +/* Icône loupe */ +.sw-search-icon { + flex: 0 0 auto; + font-size: 0.95rem; + opacity: 0.8; +} + +/* Résultats (dropdown) */ +.sw-search-results { + margin-top: 0.45rem; + border-radius: 1rem; + overflow: hidden; + max-height: 360px; + overscroll-behavior: contain; + box-shadow: + 0 18px 45px rgba(0, 0, 0, 0.85), + 0 0 0 1px rgba(15, 23, 42, 0.9); + backdrop-filter: blur(18px); + -webkit-backdrop-filter: blur(18px); +} + +/* Couleurs du dropdown par thème */ +html[data-theme="dark"] .sw-search-results, +html[data-theme="blue"] .sw-search-results { + background: rgba(6, 12, 30, 0.98); + color: var(--sw-search-text-dark); +} + +html[data-theme="light"] .sw-search-results { + background: rgba(255, 255, 255, 0.98); + color: var(--sw-search-text-light); +} + +.sw-search-result-item { + padding: 0.65rem 0.9rem; + font-size: 0.9rem; + cursor: pointer; + display: flex; + flex-direction: column; + gap: 0.15rem; +} + +/* Texte des résultats suivant le thème */ +html[data-theme="dark"] .sw-search-result-item-title, +html[data-theme="blue"] .sw-search-result-item-title { + color: var(--sw-search-text-dark); +} + +html[data-theme="light"] .sw-search-result-item-title { + color: var(--sw-search-text-light); +} + +.sw-search-result-item-sub { + font-size: 0.78rem; + opacity: 0.8; +} + +/* Hover/active suivant le thème */ +html[data-theme="dark"] .sw-search-result-item:hover, +html[data-theme="blue"] .sw-search-result-item:hover { + background: rgba(15, 23, 42, 0.9); +} + +html[data-theme="light"] .sw-search-result-item:hover { + background: rgba(243, 244, 246, 1); +}