diff --git a/frontend/src/components/AppImage.vue b/frontend/src/components/AppImage.vue index a7cb014..391c05a 100644 --- a/frontend/src/components/AppImage.vue +++ b/frontend/src/components/AppImage.vue @@ -44,7 +44,7 @@ function handleLoad() { isLoaded.value = true } -function handleError(e: Event) { +function handleError(_e: Event) { isError.value = true isLoaded.value = true } diff --git a/frontend/src/components/transporte/ShuttleSkeletonCard.vue b/frontend/src/components/transporte/ShuttleSkeletonCard.vue new file mode 100644 index 0000000..fac50a5 --- /dev/null +++ b/frontend/src/components/transporte/ShuttleSkeletonCard.vue @@ -0,0 +1,167 @@ + + + diff --git a/frontend/src/components/transporte/TaxiSkeletonCard.vue b/frontend/src/components/transporte/TaxiSkeletonCard.vue new file mode 100644 index 0000000..8fdc10a --- /dev/null +++ b/frontend/src/components/transporte/TaxiSkeletonCard.vue @@ -0,0 +1,139 @@ + + + diff --git a/frontend/src/components/transporte/TransportFilterChips.vue b/frontend/src/components/transporte/TransportFilterChips.vue new file mode 100644 index 0000000..814e284 --- /dev/null +++ b/frontend/src/components/transporte/TransportFilterChips.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/frontend/src/views/TransporteLayout.vue b/frontend/src/views/TransporteLayout.vue index 83256de..904745d 100644 --- a/frontend/src/views/TransporteLayout.vue +++ b/frontend/src/views/TransporteLayout.vue @@ -6,7 +6,6 @@ import { useRoute } from 'vue-router' const { t } = useI18n() const route = useRoute() -// Solo mostrar el header con tabs en las vistas principales const isMainView = computed(() => { return route.name === 'TaxisLocales' || route.name === 'ViajesTuristicos' }) @@ -18,7 +17,6 @@ const reloadPage = () => { onMounted(async () => { try { - // Aquí iría cualquier inicialización global del layout si fuera necesaria console.log('Transporte Hub mounted') } catch (e) { console.error('Error mounting Transporte Hub:', e) @@ -31,30 +29,44 @@ onMounted(async () => {

{{ t('taxi.title') }}

-
+
+
-
- error_outline + - + @@ -67,21 +79,21 @@ onMounted(async () => { diff --git a/frontend/src/views/transporte/ShuttleDetalle.vue b/frontend/src/views/transporte/ShuttleDetalle.vue index 89082ad..53be8bd 100644 --- a/frontend/src/views/transporte/ShuttleDetalle.vue +++ b/frontend/src/views/transporte/ShuttleDetalle.vue @@ -21,7 +21,7 @@ onMounted(async () => { cargando.value = true const shuttleId = route.params.id as string - // In a real app we might just get from the store, but directly from Supabase is safe to ensure it always works with Deep Links! + // Fetch directly from Supabase to ensure deep links always work const { data, error: sbError } = await supabase .from('shuttles') .select('*') @@ -39,19 +39,16 @@ onMounted(async () => { }) const parsePrice = (priceVal?: number | string | null): string => { - if (!priceVal) return '0.00'; - const num = typeof priceVal === 'string' ? parseFloat(priceVal) : priceVal; - return Number.isNaN(num) ? '0.00' : num.toFixed(2); -}; + if (!priceVal) return '0.00' + const num = typeof priceVal === 'string' ? parseFloat(priceVal) : priceVal + return Number.isNaN(num) ? '0.00' : num.toFixed(2) +} const volver = () => { - // Leer la ruta padre desde el meta de la ruta actual const rutaPadre = route.meta.padre as string | undefined - if (rutaPadre) { router.push({ name: rutaPadre }) } else { - // Fallback seguro router.push('/transporte/viajes-turisticos') } } @@ -65,11 +62,18 @@ const getTripTypeLabel = (type: string) => {