Barra de Busqueda

Componente SearchBar usado en el directorio y la landing para buscar clinicas veterinarias.

SearchBar - Modo Navegacion

Modo por defecto. Al seleccionar ubicacion o filtros, navega automaticamente a /directorio con los query params correspondientes.

馃搷

SearchBar - Modo Filtro

Modo filter: en vez de navegar, emite eventos al componente padre. Usado dentro de la pagina de directorio para filtrar en tiempo real.

馃搷

Caracteristicas

馃搷

Autocompletado de ubicacion

Busqueda con geocodificacion via API interna /api/geocode. Incluye opcion "Cerca de mi" con geolocalizacion GPS y fallback a IP.

馃挵

Filtro de precio

Select con opciones predefinidas: Hasta $500, $1,000 o $2,000. Cambia de estilo cuando tiene un valor seleccionado (fondo navy).

馃┖

Categorias de servicio

Chips scrollables: Consultas, Vacunacion, Estetica, Cirugias, Laboratorio y Dental. Toggle individual con estilo activo en navy.

馃殤

Filtros especiales

Chips de "Urgencias" (rojo) y "Abierto ahora" (verde). Son independientes de la categoria seleccionada.

Props y Eventos

Props:

PropTipoDefaultDescripcion
modeString'navigate''navigate' o 'filter'
initialLocationString''Texto inicial del input de ubicacion
initialCategoryStringnullCategoria preseleccionada
initialMaxPriceNumbernullPrecio maximo inicial
initialEmergencyBooleanfalseFiltro de urgencias activo
initialOpenNowBooleanfalseFiltro de "abierto ahora" activo

Eventos (modo filter):

EventoPayload
location-selected{ lat, lng, zoom, displayName } | null
category-changedString | null
price-changedNumber | null
emergency-toggledBoolean
open-now-toggledBoolean

Layout Responsivo

Desktop (lg+): Todo en una sola linea - input de ubicacion, divider, chips scrollables y select de precio.

Movil (<lg): Dos filas - fila 1: input de ubicacion, fila 2: chips + precio.

El componente es sticky debajo del header usando top: var(--header-h).