Heavily customized version of smokesignal - https://whtwnd.com/kayrozen.com/3lpwe4ymowg2t
at main 7.5 kB view raw
1/** 2 * Venue Search Component Styles 3 * Enhanced venue search, location selection, and map integration 4 */ 5 6/* Venue Search Container */ 7.venue-search-container { 8 position: relative; 9} 10 11/* Venue Suggestions Dropdown */ 12.venue-suggestions { 13 position: absolute; 14 top: 100%; 15 left: 0; 16 right: 0; 17 border: 1px solid #dbdbdb; 18 border-top: none; 19 border-radius: 0 0 4px 4px; 20 box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); 21 max-height: 300px; 22 overflow-y: auto; 23 z-index: 1000; 24 display: none; 25} 26 27.venue-suggestions.is-active { 28 display: block; 29} 30 31/* Individual Suggestion Items */ 32.venue-suggestion-item { 33 padding: 12px 16px; 34 cursor: pointer; 35 border-bottom: 1px solid #f5f5f5; 36 transition: background-color 0.2s ease; 37} 38 39.venue-suggestion-item:hover, 40.venue-suggestion-item.is-highlighted { 41 background-color: #f5f5f5; 42} 43 44.venue-suggestion-item:last-child { 45 border-bottom: none; 46} 47 48.venue-suggestion-item .media { 49 align-items: center; 50} 51 52.venue-suggestion-item .media-content { 53 overflow: visible; 54} 55 56/* Venue Information Display */ 57.venue-name { 58 font-weight: 600; 59 color: #363636; 60 margin-bottom: 4px; 61 font-size: 0.95rem; 62} 63 64.venue-address { 65 color: #757575; 66 font-size: 0.875rem; 67 margin-bottom: 4px; 68 line-height: 1.3; 69} 70 71.venue-category-icon { 72 color: #3273dc; 73 width: 24px; 74 text-align: center; 75} 76 77.venue-quality { 78 display: flex; 79 align-items: center; 80 gap: 2px; 81 margin-top: 4px; 82} 83 84.venue-quality .icon { 85 color: #ffdd57; 86} 87 88.venue-quality small { 89 margin-left: 4px; 90 color: #757575; 91} 92 93/* No Results State */ 94.venue-no-results { 95 padding: 20px; 96 text-align: center; 97 color: #757575; 98} 99 100/* Selected Venue Display */ 101.venue-selected { 102 border: 1px solid #dbdbdb; 103 border-radius: 6px; 104 padding: 16px; 105 background: white; 106 color: #363636; 107} 108 109.venue-info { 110 margin-bottom: 12px; 111} 112 113.venue-info-card { 114 border: 1px solid #e8e8e8; 115 border-radius: 6px; 116 padding: 12px; 117 background: #fafafa; 118} 119 120.venue-header { 121 display: flex; 122 align-items: flex-start; 123 gap: 12px; 124 margin-bottom: 8px; 125} 126 127.venue-icon { 128 flex-shrink: 0; 129 width: 40px; 130 height: 40px; 131 background: #3273dc; 132 color: white; 133 border-radius: 50%; 134 display: flex; 135 align-items: center; 136 justify-content: center; 137 font-size: 1rem; 138} 139 140.venue-details { 141 flex: 1; 142} 143 144.venue-details .venue-name { 145 font-weight: 600; 146 margin-bottom: 4px; 147 color: #363636; 148} 149 150.venue-details .venue-address { 151 color: #757575; 152 font-size: 0.875rem; 153 margin-bottom: 6px; 154} 155 156/* Location Details in Selected State */ 157.location-details { 158 margin-top: 8px; 159} 160 161.location-details .subtitle { 162 margin-bottom: 4px; 163} 164 165/* Mini Map Styles */ 166.venue-map-preview, 167.venue-mini-map { 168 height: 120px; 169 border-radius: 6px; 170 overflow: hidden; 171 border: 1px solid #dbdbdb; 172 margin-top: 8px; 173 position: relative; 174 cursor: pointer; 175} 176 177.venue-mini-map { 178 transition: box-shadow 0.2s ease; 179} 180 181.venue-mini-map:hover { 182 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 183} 184 185/* Map Loading and Error States */ 186.map-loading { 187 display: flex; 188 align-items: center; 189 justify-content: center; 190 height: 100%; 191 background: #f5f5f5; 192 color: #757575; 193 flex-direction: column; 194 gap: 8px; 195} 196 197.map-error { 198 display: flex; 199 align-items: center; 200 justify-content: center; 201 height: 100%; 202 background: #f5f5f5; 203 color: #757575; 204 flex-direction: column; 205 gap: 4px; 206} 207 208/* Map Picker Modal */ 209.map-picker-modal .modal-content { 210 width: 90vw; 211 height: 70vh; 212 max-width: 800px; 213 max-height: 600px; 214} 215 216.map-picker-container { 217 height: 100%; 218 display: flex; 219 flex-direction: column; 220} 221 222.map-picker-map { 223 flex: 1; 224 min-height: 400px; 225} 226 227.map-picker-controls { 228 padding: 16px; 229 border-top: 1px solid #dbdbdb; 230 background: white; 231} 232 233.map-picker-address { 234 margin-bottom: 12px; 235 padding: 8px 12px; 236 background: #f5f5f5; 237 border-radius: 4px; 238 font-size: 0.875rem; 239 color: #363636; 240} 241 242/* Event Location Enhanced Display */ 243.event-location-enhanced { 244 margin: 16px 0; 245} 246 247.event-location-basic { 248 display: flex; 249 align-items: center; 250 gap: 8px; 251 color: #757575; 252 font-size: 0.875rem; 253} 254 255/* Geolocation Button States */ 256#geolocation-button { 257 transition: all 0.2s ease; 258} 259 260#geolocation-button:hover { 261 background-color: #3273dc; 262 color: white; 263} 264 265#geolocation-button.is-loading { 266 pointer-events: none; 267} 268 269#geolocation-button.is-loading .fas { 270 animation: spin 1s linear infinite; 271} 272 273@keyframes spin { 274 from { transform: rotate(0deg); } 275 to { transform: rotate(360deg); } 276} 277 278/* Map Picker Button */ 279.map-picker-button { 280 transition: all 0.2s ease; 281} 282 283.map-picker-button:hover { 284 background-color: #3273dc; 285 color: white; 286} 287 288/* Venue Reset State */ 289.venue-reset .input { 290 background-color: #f5f5f5; 291 border-color: #dbdbdb; 292 color: #757575; 293} 294 295/* Enhanced accessibility */ 296.venue-suggestion-item[aria-selected="true"] { 297 background-color: #3273dc; 298 color: white; 299} 300 301.venue-suggestion-item[aria-selected="true"] .venue-name, 302.venue-suggestion-item[aria-selected="true"] .venue-address { 303 color: white; 304} 305 306/* Focus states */ 307.venue-suggestions:focus-within { 308 outline: 2px solid #3273dc; 309 outline-offset: -2px; 310} 311 312.venue-suggestion-item:focus { 313 outline: 2px solid #3273dc; 314 outline-offset: -2px; 315 background-color: #e8f4fd; 316} 317 318/* Responsive Design */ 319@media screen and (max-width: 768px) { 320 .venue-suggestions { 321 max-height: 250px; 322 left: -8px; 323 right: -8px; 324 } 325 326 .venue-header { 327 flex-direction: column; 328 gap: 8px; 329 } 330 331 .venue-icon { 332 align-self: flex-start; 333 } 334 335 .venue-suggestion-item { 336 padding: 10px 12px; 337 } 338 339 .venue-suggestion-item .media { 340 flex-direction: column; 341 align-items: flex-start; 342 gap: 8px; 343 } 344 345 .venue-suggestion-item .media-left { 346 margin-right: 0; 347 } 348 349 .map-picker-modal .modal-content { 350 width: 95vw; 351 height: 80vh; 352 margin: 10px; 353 } 354 355 .venue-map-preview, 356 .venue-mini-map { 357 height: 100px; 358 } 359} 360 361@media screen and (max-width: 480px) { 362 .venue-suggestions { 363 border-radius: 0; 364 left: -16px; 365 right: -16px; 366 } 367 368 .venue-suggestion-item { 369 padding: 8px 12px; 370 } 371 372 .venue-name { 373 font-size: 0.9rem; 374 } 375 376 .venue-address { 377 font-size: 0.8rem; 378 } 379 380 .map-picker-controls { 381 padding: 12px; 382 } 383} 384 385/* Dark mode support (if implemented) */ 386@media (prefers-color-scheme: dark) { 387 .venue-suggestions { 388 background: #2b2b2b; 389 border-color: #4a4a4a; 390 color: #e0e0e0; 391 } 392 393 .venue-suggestion-item { 394 border-bottom-color: #3a3a3a; 395 } 396 397 .venue-suggestion-item:hover, 398 .venue-suggestion-item.is-highlighted { 399 background-color: #3a3a3a; 400 } 401 402 .venue-selected { 403 background: #2b2b2b; 404 border-color: #4a4a4a; 405 color: #e0e0e0; 406 } 407 408 .venue-info-card { 409 background: #3a3a3a; 410 border-color: #4a4a4a; 411 } 412 413 .venue-name { 414 color: #e0e0e0; 415 } 416 417 .map-loading, 418 .map-error { 419 background: #3a3a3a; 420 color: #b0b0b0; 421 } 422}