Autosave: 20260501-141129
This commit is contained in:
parent
f9af0ce921
commit
e46cec7f80
@ -92,7 +92,7 @@ export default function PublicShell({ activeSection, children, floatingAction }:
|
||||
</div>
|
||||
<h1 className="text-3xl font-black tracking-tight text-white">Guía boricua para salir a chinchorrear</h1>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Rutas, chinchorros, lugares y favoritos para montar el próximo road trip con sazón.
|
||||
Rutas, chinchorros, lugares y favoritos para montar la próxima ruta con sazón.
|
||||
</p>
|
||||
<div className="mt-5 grid grid-cols-2 gap-3 text-sm">
|
||||
<div className="rounded-2xl border border-white/10 bg-white/5 p-3">
|
||||
@ -135,7 +135,7 @@ export default function PublicShell({ activeSection, children, floatingAction }:
|
||||
<span className="mr-2">{item.emoji}</span>
|
||||
{item.label}
|
||||
</div>
|
||||
<div className="text-xs text-slate-400">Explora esta sección</div>
|
||||
<div className="text-xs text-slate-400">Dale una vuelta</div>
|
||||
</div>
|
||||
</Link>
|
||||
);
|
||||
@ -149,7 +149,7 @@ export default function PublicShell({ activeSection, children, floatingAction }:
|
||||
className="flex flex-1 items-center justify-center gap-2 rounded-2xl border border-white/10 bg-white/5 px-3 py-3 text-sm font-semibold text-white transition hover:border-white/20 hover:bg-white/10"
|
||||
>
|
||||
<BaseIcon path={mdiLogin} size={18} />
|
||||
Entrar al admin
|
||||
Área privada
|
||||
</Link>
|
||||
<button
|
||||
type="button"
|
||||
@ -177,7 +177,7 @@ export default function PublicShell({ activeSection, children, floatingAction }:
|
||||
className="hidden items-center gap-2 rounded-full border border-white/10 bg-white/5 px-4 py-2 text-sm font-semibold text-white transition hover:border-white/20 hover:bg-white/10 sm:inline-flex"
|
||||
>
|
||||
<BaseIcon path={mdiLogin} size={16} />
|
||||
Admin
|
||||
Área privada
|
||||
</Link>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@ -24,7 +24,7 @@ export default function RoutePreview({ route, compact = false }: Props) {
|
||||
<div className="flex items-start justify-between gap-3">
|
||||
<div>
|
||||
<div className="text-xs font-semibold uppercase tracking-[0.25em] text-white/80">
|
||||
Preview de ruta
|
||||
Vista rápida
|
||||
</div>
|
||||
<div className="mt-1 text-lg font-black tracking-tight">{route.region}</div>
|
||||
</div>
|
||||
|
||||
@ -117,7 +117,7 @@ export default function EventsPage() {
|
||||
<input
|
||||
value={searchValue}
|
||||
onChange={(event) => setSearchValue(event.target.value)}
|
||||
placeholder="Buscar por festival, pueblo o venue"
|
||||
placeholder="Buscar por festival, pueblo o lugar"
|
||||
className="w-full rounded-2xl border border-white/10 bg-[#04111f]/50 px-4 py-3 text-white placeholder:text-slate-400 focus:border-[#DAA520] focus:outline-none focus:ring-0"
|
||||
/>
|
||||
</div>
|
||||
@ -201,7 +201,7 @@ export default function EventsPage() {
|
||||
<div className="mt-2 font-semibold text-white">{formatEventDate(event.nextDateIso)}</div>
|
||||
</div>
|
||||
<div className="rounded-[1.4rem] border border-white/10 bg-[#04111f]/60 p-4 text-sm text-slate-300">
|
||||
<div className="text-xs uppercase tracking-[0.2em] text-slate-500">Venue</div>
|
||||
<div className="text-xs uppercase tracking-[0.2em] text-slate-500">Lugar</div>
|
||||
<div className="mt-2 font-semibold text-white">{event.venue}</div>
|
||||
</div>
|
||||
<div className="rounded-[1.4rem] border border-white/10 bg-[#04111f]/60 p-4 text-sm text-slate-300">
|
||||
@ -225,7 +225,7 @@ export default function EventsPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<BaseIcon path={mdiStarOutline} size={16} />
|
||||
{saved ? 'Guardado' : 'Guardar evento'}
|
||||
{saved ? 'Evento guardado' : 'Guardar evento'}
|
||||
</button>
|
||||
<div className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-4 py-2 text-sm text-slate-200">
|
||||
<BaseIcon path={mdiCalendarStar} size={16} />
|
||||
@ -241,9 +241,9 @@ export default function EventsPage() {
|
||||
|
||||
{!filteredEvents.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h2 className="text-2xl font-black text-white">No encontramos eventos con ese término</h2>
|
||||
<h2 className="text-2xl font-black text-white">No salió ningún evento con esa búsqueda</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Intenta con otro pueblo, venue o limpia la búsqueda para ver el calendario completo.
|
||||
Prueba con otro pueblo o lugar, o limpia la búsqueda para ver qué viene por ahí.
|
||||
</p>
|
||||
</section>
|
||||
) : null}
|
||||
|
||||
@ -93,7 +93,7 @@ export default function HomePage() {
|
||||
<PublicShell
|
||||
activeSection="inicio"
|
||||
floatingAction={{
|
||||
label: 'Iniciar Ruta Aleatoria 🎲',
|
||||
label: 'Sorpréndeme con una ruta 🎲',
|
||||
icon: mdiDice5Outline,
|
||||
onClick: handleRandomRoute,
|
||||
}}
|
||||
@ -178,7 +178,7 @@ export default function HomePage() {
|
||||
className="inline-flex items-center gap-2 rounded-full border border-white/15 bg-white/10 px-5 py-3 text-sm font-bold text-white transition hover:border-white/25 hover:bg-white/15"
|
||||
>
|
||||
<BaseIcon path={mdiLogin} size={18} />
|
||||
Entrar al admin
|
||||
Área privada
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -210,7 +210,7 @@ export default function HomePage() {
|
||||
<SectionHeader
|
||||
eyebrow="Rutas populares"
|
||||
title="Desliza y arma tu próximo chinchorreo"
|
||||
description="Las rutas más queridas combinan paisaje, comida y paradas pensadas para un road trip sabroso."
|
||||
description="Las rutas más queridas combinan paisaje, comida y paradas pensadas para un chinchorreo sabroso."
|
||||
href="/rutas"
|
||||
/>
|
||||
<div className="flex snap-x gap-5 overflow-x-auto pb-2">
|
||||
|
||||
@ -122,9 +122,9 @@ export default function PlacesPage() {
|
||||
|
||||
{!filteredPlaces.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h2 className="text-2xl font-black text-white">No encontramos lugares con esos filtros</h2>
|
||||
<h2 className="text-2xl font-black text-white">Con esos filtros no salió ningún lugar</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Prueba buscando por pueblo, cambia la categoría o limpia el término de búsqueda.
|
||||
Prueba otro pueblo, cambia la categoría o borra la búsqueda para seguir explorando.
|
||||
</p>
|
||||
</section>
|
||||
) : null}
|
||||
@ -180,7 +180,7 @@ export default function PlacesPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<BaseIcon path={mdiStarOutline} size={16} />
|
||||
{saved ? 'Guardado' : 'Guardar en Favoritos'}
|
||||
{saved ? 'Lugar guardado' : 'Guardar lugar'}
|
||||
</button>
|
||||
</div>
|
||||
<div className="inline-flex items-center gap-2 text-sm text-slate-300">
|
||||
|
||||
@ -297,7 +297,7 @@ export default function MapPage() {
|
||||
href={selectedItem.href}
|
||||
className="inline-flex items-center gap-2 rounded-full bg-white px-4 py-2 text-sm font-semibold text-[#04111f]"
|
||||
>
|
||||
Ver detalle
|
||||
Ver en la guía
|
||||
<BaseIcon path={mdiChevronRight} size={16} />
|
||||
</Link>
|
||||
<a
|
||||
@ -330,7 +330,7 @@ export default function MapPage() {
|
||||
|
||||
<div className="rounded-[2rem] border border-white/10 bg-white/5 p-6 shadow-xl shadow-black/20">
|
||||
<div className="text-xs font-bold uppercase tracking-[0.35em] text-[#FDE68A]">Ruta desde el mapa</div>
|
||||
<h2 className="mt-2 text-2xl font-black text-white">Pins seleccionados</h2>
|
||||
<h2 className="mt-2 text-2xl font-black text-white">Paradas seleccionadas</h2>
|
||||
{selectedRouteItems.length ? (
|
||||
<div className="mt-5 space-y-3">
|
||||
{selectedRouteItems.map((item, index) => (
|
||||
@ -357,7 +357,7 @@ export default function MapPage() {
|
||||
</div>
|
||||
) : (
|
||||
<div className="mt-5 rounded-[1.6rem] border border-dashed border-white/10 bg-[#04111f]/40 p-5 text-sm leading-6 text-slate-300">
|
||||
Toca varios pins para armar una mini ruta. Necesitas al menos dos para trazarla.
|
||||
Marca varias paradas para armar una mini ruta. Con dos o más ya puedes abrirla.
|
||||
</div>
|
||||
)}
|
||||
|
||||
@ -369,7 +369,7 @@ export default function MapPage() {
|
||||
className="mt-5 inline-flex items-center gap-2 rounded-full bg-white px-5 py-3 text-sm font-bold text-[#04111f]"
|
||||
>
|
||||
<BaseIcon path={mdiMapSearchOutline} size={16} />
|
||||
Trazar Ruta
|
||||
Abrir ruta
|
||||
</a>
|
||||
) : null}
|
||||
</div>
|
||||
@ -378,9 +378,9 @@ export default function MapPage() {
|
||||
|
||||
{!visibleItems.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h2 className="text-2xl font-black text-white">No hay pins visibles con esos filtros</h2>
|
||||
<h2 className="text-2xl font-black text-white">Con esos filtros no se ve ninguna parada en el mapa</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Activa chinchorros o lugares nuevamente, o limpia la búsqueda para reconstruir el mapa.
|
||||
Vuelve a activar chinchorros o lugares, o limpia la búsqueda para verlo completo otra vez.
|
||||
</p>
|
||||
</section>
|
||||
) : null}
|
||||
|
||||
@ -91,7 +91,7 @@ export default function FavoritesPage() {
|
||||
|
||||
const handleRemoveFavorite = (category: FavoriteCategory, itemSlug: string) => {
|
||||
removeFavorite(category, itemSlug, activeListId);
|
||||
setFeedback('Favorito removido de la lista activa.');
|
||||
setFeedback('Se quitó de la lista activa.');
|
||||
};
|
||||
|
||||
const handleRemoveList = () => {
|
||||
@ -122,7 +122,7 @@ export default function FavoritesPage() {
|
||||
Crea listas y guarda tus próximos jangueos
|
||||
</h1>
|
||||
<p className="mt-3 text-base leading-7 text-slate-300">
|
||||
En esta primera iteración, tus favoritos viven en el navegador: puedes crear listas,
|
||||
Tus favoritos se guardan en este dispositivo: puedes crear listas,
|
||||
elegir una lista activa y compartirla por WhatsApp.
|
||||
</p>
|
||||
|
||||
@ -212,7 +212,7 @@ export default function FavoritesPage() {
|
||||
onClick={handleClearList}
|
||||
className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-transparent px-4 py-2 text-sm font-semibold text-slate-200 transition hover:border-white/20 hover:bg-white/5"
|
||||
>
|
||||
Vaciar lista activa
|
||||
Vaciar esta lista
|
||||
</button>
|
||||
{activeListId !== DEFAULT_PUBLIC_LIST_ID ? (
|
||||
<button
|
||||
@ -242,7 +242,7 @@ export default function FavoritesPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<div className="text-xs uppercase tracking-[0.25em] text-slate-400">
|
||||
{isActive ? 'Lista activa' : 'Toca para activar'}
|
||||
{isActive ? 'Lista activa' : 'Usar esta lista'}
|
||||
</div>
|
||||
<h3 className="mt-2 text-2xl font-black text-white">{list.name}</h3>
|
||||
<p className="mt-2 text-sm leading-6 text-slate-300">{list.description}</p>
|
||||
@ -296,7 +296,7 @@ export default function FavoritesPage() {
|
||||
href={item.itemHref}
|
||||
className="inline-flex items-center gap-2 rounded-full bg-white px-4 py-2 text-sm font-semibold text-[#04111f]"
|
||||
>
|
||||
Ver detalle
|
||||
Ver en la guía
|
||||
<BaseIcon path={mdiChevronRight} size={16} />
|
||||
</Link>
|
||||
<button
|
||||
@ -313,7 +313,7 @@ export default function FavoritesPage() {
|
||||
</div>
|
||||
) : (
|
||||
<div className="mt-5 rounded-[1.6rem] border border-dashed border-white/10 bg-[#04111f]/40 p-6 text-sm leading-6 text-slate-300">
|
||||
Todavía no tienes {categoryLabels[category].toLowerCase()} guardados en esta lista.
|
||||
Aquí todavía no has guardado {categoryLabels[category].toLowerCase()} en esta lista.
|
||||
</div>
|
||||
)}
|
||||
</article>
|
||||
@ -324,9 +324,9 @@ export default function FavoritesPage() {
|
||||
{!activeFavorites.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<BaseIcon path={mdiStarOutline} size={42} className="mx-auto text-[#FDE68A]" />
|
||||
<h2 className="mt-4 text-3xl font-black text-white">Tu lista activa todavía está vacía</h2>
|
||||
<h2 className="mt-4 text-3xl font-black text-white">Esta lista está vacía por ahora</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Empieza guardando una ruta, un chinchorro o un lugar desde el resto de la guía pública.
|
||||
Guarda una ruta, un chinchorro o un lugar desde la guía y aquí se te irá armando el plan.
|
||||
</p>
|
||||
<div className="mt-5 flex flex-wrap items-center justify-center gap-3">
|
||||
<Link
|
||||
|
||||
@ -127,7 +127,7 @@ export default function RestaurantsPage() {
|
||||
className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-5 py-3 text-sm font-bold text-white transition hover:border-white/20 hover:bg-white/10"
|
||||
>
|
||||
<BaseIcon path={mdiShareVariantOutline} size={16} />
|
||||
Compartir esta página
|
||||
Compartir selección
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@ -373,7 +373,7 @@ export default function RestaurantsPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<BaseIcon path={mdiStarOutline} size={16} />
|
||||
{saved ? 'Guardado' : 'Guardar en Favoritos'}
|
||||
{saved ? 'Chinchorro guardado' : 'Guardar chinchorro'}
|
||||
</button>
|
||||
{chinchorro.routeSlug ? (
|
||||
<Link
|
||||
@ -393,9 +393,9 @@ export default function RestaurantsPage() {
|
||||
|
||||
{!filteredChinchorros.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h2 className="text-2xl font-black text-white">No encontramos chinchorros con esos filtros</h2>
|
||||
<h2 className="text-2xl font-black text-white">Con esos filtros no salió ningún chinchorro</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Cambia la región, quita el filtro de abierto ahora o busca por pueblo para ver más opciones.
|
||||
Prueba otro pueblo, quita “Abierto ahora” o cambia la región para ver más opciones.
|
||||
</p>
|
||||
</section>
|
||||
) : null}
|
||||
|
||||
@ -49,13 +49,13 @@ export default function RouteDetailPage() {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Chinchorreo PR | Ruta no encontrada</title>
|
||||
<title>Chinchorreo PR | Esa ruta no aparece por aquí</title>
|
||||
</Head>
|
||||
<PublicShell activeSection="rutas">
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h1 className="text-3xl font-black text-white">Ruta no encontrada</h1>
|
||||
<h1 className="text-3xl font-black text-white">Esa ruta no aparece por aquí</h1>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Parece que esta ruta todavía no está publicada en la primera iteración de la guía.
|
||||
Puede que el enlace haya cambiado o que todavía no la tengamos publicada en la guía.
|
||||
</p>
|
||||
<Link
|
||||
href="/rutas"
|
||||
@ -143,7 +143,7 @@ export default function RouteDetailPage() {
|
||||
className="inline-flex items-center gap-2 rounded-full bg-white px-5 py-3 text-sm font-bold text-[#04111f] transition hover:bg-slate-100"
|
||||
>
|
||||
<BaseIcon path={mdiCompassOutline} size={16} />
|
||||
Iniciar Navegación
|
||||
Abrir navegación
|
||||
</a>
|
||||
<button
|
||||
type="button"
|
||||
@ -156,7 +156,7 @@ export default function RouteDetailPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<BaseIcon path={mdiStarOutline} size={16} />
|
||||
{saved ? 'Ruta guardada' : 'Agregar a Favoritos ⭐'}
|
||||
{saved ? 'Ruta guardada' : 'Guardar ruta'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
@ -164,7 +164,7 @@ export default function RouteDetailPage() {
|
||||
className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/10 px-5 py-3 text-sm font-bold text-white transition hover:border-white/20 hover:bg-white/15"
|
||||
>
|
||||
<BaseIcon path={mdiShareVariantOutline} size={16} />
|
||||
Compartir por WhatsApp
|
||||
Compartir ruta
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -272,7 +272,7 @@ export default function RouteDetailPage() {
|
||||
href="/mis-favoritos"
|
||||
className="mt-5 inline-flex items-center gap-2 text-sm font-semibold text-[#FDE68A]"
|
||||
>
|
||||
Ver mis favoritos
|
||||
Abrir favoritos
|
||||
<BaseIcon path={mdiChevronRight} size={16} />
|
||||
</Link>
|
||||
</div>
|
||||
|
||||
@ -113,7 +113,7 @@ export default function RoutesPage() {
|
||||
Explora la isla parada por parada
|
||||
</h1>
|
||||
<p className="mt-3 text-base leading-7 text-slate-300">
|
||||
Esta primera iteración te deja descubrir rutas populares, ver sus paradas en orden,
|
||||
Aquí puedes descubrir rutas populares, ver sus paradas en orden,
|
||||
iniciar navegación y guardarlas en una lista personalizada.
|
||||
</p>
|
||||
</div>
|
||||
@ -121,7 +121,7 @@ export default function RoutesPage() {
|
||||
<div className="font-semibold text-white">Lista activa</div>
|
||||
<div className="mt-1 text-[#FDE68A]">{activeList?.name || 'Mi chinchorreo'}</div>
|
||||
<Link href="/mis-favoritos" className="mt-3 inline-flex items-center gap-2 text-sm font-semibold text-[#A7F3D0]">
|
||||
Ver favoritos
|
||||
Abrir favoritos
|
||||
<BaseIcon path={mdiChevronRight} size={16} />
|
||||
</Link>
|
||||
</div>
|
||||
@ -180,7 +180,7 @@ export default function RoutesPage() {
|
||||
<div className="mt-4 flex flex-wrap items-center gap-3 text-sm text-slate-300">
|
||||
<div className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-2">
|
||||
<BaseIcon path={mdiFilterVariant} size={16} />
|
||||
{filteredRoutes.length} rutas que matchean tu vibe
|
||||
{filteredRoutes.length} rutas que van con tu plan
|
||||
</div>
|
||||
{feedback ? (
|
||||
<div className="inline-flex items-center gap-2 rounded-full border border-[#228B22]/30 bg-[#228B22]/10 px-3 py-2 text-[#A7F3D0]">
|
||||
@ -251,7 +251,7 @@ export default function RoutesPage() {
|
||||
href={`/rutas/${route.slug}`}
|
||||
className="inline-flex items-center gap-2 rounded-full bg-white px-5 py-3 text-sm font-bold text-[#04111f] transition hover:bg-slate-100"
|
||||
>
|
||||
Ver detalle
|
||||
Ver ruta
|
||||
<BaseIcon path={mdiChevronRight} size={16} />
|
||||
</Link>
|
||||
<a
|
||||
@ -274,7 +274,7 @@ export default function RoutesPage() {
|
||||
].join(' ')}
|
||||
>
|
||||
<BaseIcon path={mdiStarOutline} size={16} />
|
||||
{saved ? 'Guardada' : 'Agregar a Favoritos'}
|
||||
{saved ? 'Ruta guardada' : 'Guardar ruta'}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
@ -283,7 +283,7 @@ export default function RoutesPage() {
|
||||
}
|
||||
className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-transparent px-5 py-3 text-sm font-bold text-slate-200 transition hover:border-white/20 hover:bg-white/5"
|
||||
>
|
||||
Compartir por WhatsApp
|
||||
Compartir ruta
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -294,10 +294,9 @@ export default function RoutesPage() {
|
||||
|
||||
{!filteredRoutes.length ? (
|
||||
<section className="rounded-[2rem] border border-dashed border-white/15 bg-white/5 p-10 text-center shadow-xl shadow-black/20">
|
||||
<h2 className="text-2xl font-black text-white">No encontramos una ruta con esos filtros</h2>
|
||||
<h2 className="text-2xl font-black text-white">Con esos filtros no salió ninguna ruta</h2>
|
||||
<p className="mt-3 text-sm leading-6 text-slate-300">
|
||||
Prueba quitando una etiqueta, cambia la dificultad o usa el botón “Sorpréndeme” para
|
||||
descubrir una ruta nueva.
|
||||
Quita una etiqueta, cambia la dificultad o dale a “Sorpréndeme” para que aparezca otra opción.
|
||||
</p>
|
||||
<div className="mt-5 flex flex-wrap items-center justify-center gap-3">
|
||||
<button
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user