From 281a2446a725a2af5dcb4e8cf910cff9b5b6b77f Mon Sep 17 00:00:00 2001 From: juan Date: Mon, 27 Oct 2025 14:37:27 +0100 Subject: [PATCH] Refactor card styles and layout across multiple insurance routes for consistency; update sitemap with new routes and priorities; enhance typography with Outfit font; improve accessibility and responsiveness in tables and cards. --- app.config.ts | 15 +- package.json | 8 +- public/_redirects | 1 + public/sitemap.xml | 2 +- src/components/Cookies.tsx | 23 +- src/components/Footer.tsx | 3 +- src/components/NavBarComponents.tsx | 107 ++++-- src/components/NotFound.tsx | 2 +- src/routes/__root.tsx | 23 +- src/routes/formulario/index.tsx | 3 +- src/routes/index.tsx | 442 ++++++++++++++--------- src/routes/seguros/decesos.tsx | 40 +- src/routes/seguros/hogar.tsx | 165 ++++++--- src/routes/seguros/mascotas/caballos.tsx | 2 +- src/routes/seguros/mascotas/index.tsx | 30 +- src/routes/seguros/mascotas/perros.tsx | 2 +- src/routes/seguros/salud.tsx | 79 ++-- src/routes/seguros/vehiculos/coche.tsx | 2 +- src/routes/seguros/vehiculos/index.tsx | 27 +- src/routes/seguros/vehiculos/moto.tsx | 2 +- src/routes/seguros/vida.tsx | 6 +- src/styles/app.css | 5 + src/utils/sitemap.ts | 52 ++- 23 files changed, 649 insertions(+), 392 deletions(-) create mode 100644 public/_redirects diff --git a/app.config.ts b/app.config.ts index 5fbb7e0..7a342d7 100644 --- a/app.config.ts +++ b/app.config.ts @@ -3,12 +3,21 @@ import tsConfigPaths from "vite-tsconfig-paths"; import { sitemap } from "./src/utils/sitemap"; import { generateSitemap } from "tanstack-router-sitemap"; - export default defineConfig({ server: { + preset: "netlify", prerender: { - routes: ["/", "/seguros", "/formulario"], + routes: [ + "/", + "/seguros", + "/formulario", + "/seguros/vehiculos", + "/seguros/hogar", + "/seguros/vida", + "/seguros/salud", + "/seguros/decesos", + ], crawlLinks: true, }, }, @@ -20,7 +29,7 @@ export default defineConfig({ tsConfigPaths({ projects: ["./tsconfig.json"], }), - generateSitemap(sitemap) + generateSitemap(sitemap), ], }, }); diff --git a/package.json b/package.json index c3f387c..b58bff9 100644 --- a/package.json +++ b/package.json @@ -65,15 +65,15 @@ "@tanstack/react-start": "^1.114.22", "@tanstack/zod-adapter": "^1.114.34", "axios": "^1.8.3", - "framer-motion": "^11.18.2", + "framer-motion": "^12.23.16", "react": "^19.0.0", "react-cookie": "^8.0.1", "react-dom": "^19.0.0", "redaxios": "^0.5.1", "sonner": "^2.0.1", - "tailwind-merge": "^2.6.0", - "vinxi": "0.5.3", - "zod": "^3.24.2" + "tailwind-merge": "^3.3.1", + "vinxi": "0.5.8", + "zod": "^4.1.11" }, "devDependencies": { "@types/node": "^22.5.4", diff --git a/public/_redirects b/public/_redirects new file mode 100644 index 0000000..ad37e2c --- /dev/null +++ b/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/public/sitemap.xml b/public/sitemap.xml index 0be9ce5..85a76a9 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -1 +1 @@ -https://victoriaseguros.com/seguros/decesosdaily1.0https://victoriaseguros.com/seguros/saluddaily1.0https://victoriaseguros.com/seguros/mascotasdaily1.0https://victoriaseguros.com/seguros/vehiculosdaily1.0https://victoriaseguros.com/seguros/vidadaily1.0https://victoriaseguros.com/seguros/hogardaily1.0https://victoriaseguros.com/formulariodaily1.0 \ No newline at end of file +https://victoriaseguros.es/daily1.0https://victoriaseguros.es/iniciodaily1.0https://victoriaseguros.es/segurosdaily1.0https://victoriaseguros.es/seguros/vidadaily1.0https://victoriaseguros.es/seguros/hogardaily1.0https://victoriaseguros.es/seguros/saluddaily1.0https://victoriaseguros.es/seguros/decesosdaily1.0https://victoriaseguros.es/seguros/vehiculos/cochedaily1.0https://victoriaseguros.es/seguros/mascotasdaily1.0https://victoriaseguros.es/seguros/mascotas/perrosdaily1.0https://victoriaseguros.es/seguros/mascotas/caballodaily1.0 \ No newline at end of file diff --git a/src/components/Cookies.tsx b/src/components/Cookies.tsx index 98a6f72..58c6f28 100644 --- a/src/components/Cookies.tsx +++ b/src/components/Cookies.tsx @@ -3,7 +3,7 @@ import { useEffect, useState } from "react"; import { useCookies } from "react-cookie"; export default function CookieConsent() { - const [cookies, setCookie, removeCookie] = useCookies(["cookieConsent"]); + const [cookies, setCookie] = useCookies(["cookieConsent"]); const [visible, setVisible] = useState(false); useEffect(() => { @@ -20,11 +20,6 @@ export default function CookieConsent() { setVisible(false); }; - // const rejectCookies = () => { - // removeCookie("cookieConsent", { path: "/" }); - // setVisible(false); - // }; - if (!visible) return null; return ( @@ -36,21 +31,19 @@ export default function CookieConsent() { política de cookies / - - + política de privacidad .

- - {/* */} +
diff --git a/src/components/Footer.tsx b/src/components/Footer.tsx index e483840..7fcc951 100644 --- a/src/components/Footer.tsx +++ b/src/components/Footer.tsx @@ -9,12 +9,11 @@ export const Footer = () => {
Logo Seguros Victoria Seguros
diff --git a/src/components/NavBarComponents.tsx b/src/components/NavBarComponents.tsx index 35a2c0c..3fe0750 100644 --- a/src/components/NavBarComponents.tsx +++ b/src/components/NavBarComponents.tsx @@ -8,53 +8,53 @@ import { NavbarMenuItem, NavbarMenuToggle, } from "@heroui/navbar"; +import { + Dropdown, + DropdownTrigger, + DropdownMenu, + DropdownItem, +} from "@heroui/dropdown"; import React from "react"; -// import { Link } from "@heroui/link"; -import { - Link, - useMatch, - useMatchRoute, - useNavigate, -} from "@tanstack/react-router"; +import { Link, useNavigate } from "@tanstack/react-router"; import { Button } from "@heroui/button"; import { cn } from "@heroui/theme"; -import { Divider } from "@heroui/divider"; -import ButtonCall from "./ButtonCall"; import { Chip } from "@heroui/chip"; -// import {Icon} from "@iconify/react"; - -const menuItems = [ +const menuItems: { + icon: string; + text: string; + link: string; +}[] = [ { - icon: "", text: "Decesos", link: "/seguros/decesos/", + icon: "iconify solar--leaf-line-duotone size-8", }, { - icon: "", text: "Salud", link: "/seguros/salud/", + icon: "iconify solar--heart-pulse-2-line-duotone size-8", }, { - icon: "", text: "Hogar", link: "/seguros/hogar/", + icon: "iconify solar--key-line-duotone size-8", }, { - icon: "", text: "Mascotas", link: "/seguros/mascotas/", + icon: "iconify solar--paw-line-duotone size-8", }, { - icon: "", text: "Vehículos", link: "/seguros/vehiculos/", + icon: "iconify solar--wheel-angle-line-duotone size-8", }, { - icon: "", text: "Vida", link: "/seguros/vida/", + icon: "iconify solar--hand-heart-line-duotone size-8", }, ]; @@ -63,7 +63,6 @@ const activeLinkProps = { }; const navLinks = [ - { to: "/", label: "Inicio", className: "text-lg" }, { to: "/seguros/decesos", label: "Decesos" }, { to: "/seguros/hogar", label: "Hogar" }, { to: "/seguros/salud", label: "Salud" }, @@ -118,19 +117,67 @@ const BasicNavbar = React.forwardRef( VictoriaSeguros + + + + + + + {menuItems.map((mi) => ( + { + navigate({ + to: mi.link, + viewTransition: true, + }); + }} + startContent={} + > +

{mi.text}

+
+ ))} +
+
( startContent={ } + size="lg" classNames={{ content: "mx-1 items-center font-semibold", }} @@ -215,6 +263,7 @@ const BasicNavbar = React.forwardRef( > {mi.text} +
diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx index fe34ce4..aa4ded0 100644 --- a/src/components/NotFound.tsx +++ b/src/components/NotFound.tsx @@ -4,7 +4,7 @@ import { Link } from "@tanstack/react-router"; export function NotFound({ children }: { children?: any }) { return (
- +
diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 01091d7..8d716cd 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -15,12 +15,9 @@ import BasicNavbar from "~/components/NavBarComponents"; import { NotFound } from "~/components/NotFound"; import appCss from "~/styles/app.css?url"; import { seo } from "~/utils/seo"; -import { CookiesProvider, useCookies } from "react-cookie"; +import { CookiesProvider } from "react-cookie"; import Clarity from "@microsoft/clarity"; -// import { createServerFn } from "@tanstack/react-start"; -// import { getCookie } from "@tanstack/react-start/server"; import CookieConsent from "~/components/Cookies"; -// const cookieValue = createServerFn().s(() => getCookie("cookie-vs")); export const Route = createRootRouteWithContext<{ queryClient: QueryClient; @@ -29,6 +26,7 @@ export const Route = createRootRouteWithContext<{ meta: [ { charSet: "utf-8", + lang: "es", }, { name: "viewport", @@ -47,12 +45,6 @@ export const Route = createRootRouteWithContext<{ { rel: "icon", href: "/favicon.ico" }, ], }), - // beforeLoad: async () => { - // const cookieV = await cookieValue(); - // return { - // haveCookies: cookieV, - // }; - // }, errorComponent: (props) => { return ( @@ -76,21 +68,22 @@ function RootComponent() { } function RootDocument({ children }: { children: React.ReactNode }) { - const projectId = "qxxlp3g93r"; - Clarity.init(projectId); - // const { haveCookies } = Route.useRouteContext(); - // console.log(haveCookies); // if (haveCookies === "false") { // Clarity.consent(false); // } + // if(process.env.NODE_ENV === "production") { + // const projectId = "qxxlp3g93r"; + // Clarity.init(projectId); + // } + return ( -
+
{children} diff --git a/src/routes/formulario/index.tsx b/src/routes/formulario/index.tsx index 0d249ca..ae657a2 100644 --- a/src/routes/formulario/index.tsx +++ b/src/routes/formulario/index.tsx @@ -85,7 +85,7 @@ function RouteComponent() { to: "/", viewTransition: true, replace: true, - }) + }); }, onError: () => { toast.error("Error al enviar petición", { id: "email-toast" }); @@ -95,7 +95,6 @@ function RouteComponent() { const onSubmit = (event: React.FormEvent) => { event.preventDefault(); const formData = new FormData(event.currentTarget); - const name = formData.get("nombre") as string; const time = formData.get("horario") as string; const description = formData.get("descripcion") as string; diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 938af09..085d87d 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -1,13 +1,16 @@ -import { createFileRoute, Link, Outlet } from "@tanstack/react-router"; +import { + createFileRoute, + Link, + Outlet, + redirect, +} from "@tanstack/react-router"; +import { seo } from "~/utils/seo"; +import appCss from "~/styles/app.css?url"; import { Card, CardBody, CardFooter, CardHeader } from "@heroui/card"; import { Button } from "@heroui/button"; import { Image } from "@heroui/image"; import { indexCards } from "~/content/hogar"; -import { seo } from "~/utils/seo"; -import appCss from "~/styles/app.css?url"; -import RotatingText from "../TextAnimations/RotatingText/RotatingText"; -import CountUp from "~/TextAnimations/CountUp/CountUp"; -import { motion } from "framer-motion"; +import RotatingText from "~/TextAnimations/RotatingText/RotatingText"; import { Chip } from "@heroui/chip"; export const Route = createFileRoute("/")({ @@ -33,7 +36,7 @@ export const Route = createFileRoute("/")({ { rel: "icon", href: "/favicon.ico" }, ], }), - component: MainComponent, + component: RouteComponent, }); const insuranceCard = [ @@ -70,23 +73,41 @@ const insuranceCard = [ }, ]; -export function MainComponent() { - const waUrl = `https://wa.me/${+34633620767}`; +const opiniones = [ + { + nombre: "María López", + comentario: + " Servicio excepcional, genial trato humano y gran profesionalidad.Muy agradecido de contar con el equipo.", + rating: 5, + }, + { + nombre: "Carlos Hernández", + comentario: `En Helvetia seguros las chicas son muy atentas, siempre están disponibles para cualquier cosa que necesito. +Las recomiendo totalmente`, + rating: 4, + }, + { + nombre: "Laura Fernández", + comentario: + "La atención ha sido directa y rápida sobre la duda o caso a definir.Gracias.", + rating: 5, + }, +]; + +function RouteComponent() { const navigate = Route.useNavigate(); + const waUrl = `https://wa.me/${+34633620767}`; return (

Victoria{" "} - {/* - seguros - */} Whatsapp @@ -133,7 +156,8 @@ export function MainComponent() { Calcular precio

-
+ +
{insuranceCard.map((v) => ( @@ -165,181 +189,245 @@ export function MainComponent() {
-
-
- +
+
+
+ + +
+ + +
+
+

+ 💙 Cercanas, claras y decididas.{" "} +

+

+ En Victoria Seguros creemos que la confianza se + demuestra con hechos. Por eso, cuando nos necesitas, + respondemos sin rodeos.{" "} + + Nada de esperas eternas ni mensajes automáticos: te + escuchamos, analizamos tu caso y encontramos la + solución más rápida y efectiva. + {" "} + Somos un equipo comprometido, que combina trato humano + con decisión y resultados. +

+

+ Sabemos que detrás de cada seguro hay una historia, una + familia, una tranquilidad que proteger… y actuamos con + la misma energía con la que cuidaríamos la nuestra.{" "} +

+

+ Aquí no hay burocracia ni excusas, solo personas que + resuelven, acompañan y se implican. Y si prefieres + hablar cara a cara, te esperamos con un café en nuestras + oficinas —porque para nosotras, las mejores soluciones + empiezan con una buena conversación. +

+
+
+ +
+
+
+ victoria seguros-mayores + + Número de mediadora:{" "} + + C015723313192R + + + +
+ + + +
+
+

+8000

{" "} + clientes nos han elegido +
+
+
+
+ + +
+
+

+400

{" "} + seguros cerrados al mes +
+
+
+
+
+ +
+
+
+
+ + +

+ Opiniones de nuestros clientes +

+
+ + + {opiniones.map((opinion, i) => ( +
+
+

{opinion.nombre}

+
+ {Array.from({ length: 5 }).map((_, j) => ( + + ))} +
+
+

+ {opinion.comentario} +

+
+ ))} +
+
+
+ + -
-
+
+
+
+
+ {indexCards?.map((pc) => ( + + + + +
{pc?.title}
+
+
+
+ ))} +
+

+ Pago mensual hasta 80 años +

+
+

+ ​Entendemos que cada etapa de la vida presenta + necesidades únicas. Por ello, en Victoria Seguros, + ofrecemos un plan de{" "} + + pago mensual especialmente diseñado para personas + mayores de 60 años, con posibilidad de contratación + !hasta los 80! + +

+

+ Este plan te permite disfrutar de la cobertura esencial + que necesitas sin sorpresas ni cargas económicas, + manteniendo tus finanzas equilibradas. Además, contarás + con el respaldo y la confianza que caracterizan a + nuestra aseguradora. +

+

+ Tu tranquilidad y seguridad son nuestra prioridad, sin + importar la edad. +

+
+
+
+ +
+
+
+

+ Ahora con tu seguro de decesos también puedes incluir la + Responsabilidad Civil para perros +

+

+ Con la Asistencia a Mascotas también podrás contratar la + cobertura de Responsabilidad Civil para perros peligrosos y + no peligrosos, obligatorio con la nueva Ley de Bienestar + Animal. +

+
+
victoria seguros-mayores
- -
+
+

¿Por qué nos contratan?

-
-

- En nuestra aseguradora, apostamos por un trato - verdaderamente personalizado. Contamos con agentes - asignados y cercanos que te acompañan con experiencia y - compromiso. Además, si lo necesitas, también estamos - disponibles en nuestras oficinas físicas en Alicante. Una - llamada es suficiente para conocernos. -

-

- Ofrecemos una atención a medida, sin intermediarios. - Creemos que un trato personal es la única manera de - comprender a la perfección las necesidades de cada - cliente. -

-

Número de mediadora: C015723313192R

- - Más de{" "} - - {" "} - - clientes confian en nosotras - - - Más de{" "} - - {" "} - - seguros cerrados al mes - -
+

+ En nuestra aseguradora, apostamos por un trato + verdaderamente personalizado. Contamos con agentes asignados + y cercanos que te acompañan con experiencia y compromiso. + Además, si lo necesitas, también estamos disponibles en + nuestras oficinas físicas en Alicante. Una llamada es + suficiente para conocernos. +

+

+ Ofrecemos una atención a medida, sin intermediarios. Creemos + que un trato personal es la única manera de comprender a la + perfección las necesidades de cada cliente. +

-
- -
- -
-
- - - - - -
-
-
- - victoria seguros-mayores - -
-
- -
-

- Pago mensual hasta 80 años -

-
-

- ​Entendemos que cada etapa de la vida presenta necesidades - únicas. Por ello, en Victoria Seguros, ofrecemos un plan - de pago mensual especialmente diseñado para personas - mayores de 60 años, con posibilidad de contratación - ¡hasta los 80! -

-

- Este plan te permite disfrutar de la cobertura esencial - que necesitas sin sorpresas ni cargas económicas, - manteniendo tus finanzas equilibradas. Además, contarás - con el respaldo y la confianza que caracterizan a nuestra - aseguradora. -

-

- Tu tranquilidad y seguridad son nuestra prioridad, sin - importar la edad. -

-
-
-
-
-
- {indexCards?.map((pc) => ( - - - -

- {pc.title} -

-
-
- ))} -
-
-
- -
- -
-
-
diff --git a/src/routes/seguros/decesos.tsx b/src/routes/seguros/decesos.tsx index 37c98b6..e0812f7 100644 --- a/src/routes/seguros/decesos.tsx +++ b/src/routes/seguros/decesos.tsx @@ -42,7 +42,7 @@ export const Route = createFileRoute("/seguros/decesos")({ function RouteComponent() { return (
- +

Seguro de Decesos

@@ -170,25 +170,27 @@ function RouteComponent() { />
+ +

+ Tu mascota es uno más de la familia +

+
+ {petsCards?.map((pc) => ( + + +

{pc.title}

+ +
+ +

{pc.description}

+
+
+ ))} +
+
-

- Tu mascota es uno más de la familia -

-
- {petsCards?.map((pc) => ( - - -

{pc.title}

- -
- -

{pc.description}

-
-
- ))} -
diff --git a/src/routes/seguros/hogar.tsx b/src/routes/seguros/hogar.tsx index 2b91fe7..040bf33 100644 --- a/src/routes/seguros/hogar.tsx +++ b/src/routes/seguros/hogar.tsx @@ -14,7 +14,10 @@ import { } from "@heroui/table"; import { homeCards, indexCards } from "~/content/hogar"; import appCss from "~/styles/app.css?url"; -import { dataChipHome, accordionfrequentlyaskedquestions } from "~/content/hogar"; +import { + dataChipHome, + accordionfrequentlyaskedquestions, +} from "~/content/hogar"; import ButtonCall from "~/components/ButtonCall"; import { seo } from "~/utils/seo"; type CellValue = React.ReactNode | string; @@ -25,7 +28,6 @@ interface RowData { values: CellValue[]; } - const iconCheck = ( ); @@ -33,34 +35,97 @@ const iconCross = ( ); - const columns = [ - { key: "a", label: "" }, + { key: "demo", label: "" }, { key: "basico", label: "Básico" }, { key: "estandar", label: "Estándar" }, { key: "premium", label: "Premium" }, ]; const rows: RowData[] = [ - { key: "incendio", label: "Incendio", values: [iconCheck, iconCheck, iconCheck] }, - { key: "servicio-asistencia", label: "Servicio de asistencia", values: [iconCheck, iconCheck, iconCheck] }, - { key: "responsabilidad-civil", label: "Responsabilidad civil", values: ["Solo incendio", iconCheck, iconCheck] }, - { key: "alimento-refrigerados", label: "Alimentos refrigerados", values: [iconCross, iconCheck, iconCheck] }, - { key: "daños-por-agua", label: "Daños por agua", values: [iconCross, iconCheck, iconCheck] }, - { key: "roturas", label: "Roturas", values: [iconCross, iconCheck, iconCheck] }, - { key: "robo-y-vandalismo", label: "Robo y vandalismo", values: [iconCross, iconCheck, iconCheck] }, - { key: "coberturas-consecuenciales", label: "Coberturas consecuenciales", values: [iconCross, iconCheck, iconCheck] }, - { key: "defensa-jurídica", label: "Defensa jurídica", values: [iconCross, iconCheck, iconCheck] }, - { key: "robo-integral", label: "Robo Integral", values: [iconCross, iconCross, iconCheck] }, - { key: "daños-eléctricos", label: "Daños eléctricos", values: [iconCross, iconCross, iconCheck] }, - { key: "bricohogar", label: "Bricohogar", values: [iconCross, iconCross, iconCheck] }, + { + key: "incendio", + label: "Incendio", + values: [iconCheck, iconCheck, iconCheck], + }, + { + key: "servicio-asistencia", + label: "Servicio de asistencia", + values: [iconCheck, iconCheck, iconCheck], + }, + { + key: "responsabilidad-civil", + label: "Responsabilidad civil", + values: ["Solo incendio", iconCheck, iconCheck], + }, + { + key: "alimento-refrigerados", + label: "Alimentos refrigerados", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "daños-por-agua", + label: "Daños por agua", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "roturas", + label: "Roturas", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "robo-y-vandalismo", + label: "Robo y vandalismo", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "coberturas-consecuenciales", + label: "Coberturas consecuenciales", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "defensa-jurídica", + label: "Defensa jurídica", + values: [iconCross, iconCheck, iconCheck], + }, + { + key: "robo-integral", + label: "Robo Integral", + values: [iconCross, iconCross, iconCheck], + }, + { + key: "daños-eléctricos", + label: "Daños eléctricos", + values: [iconCross, iconCross, iconCheck], + }, + { + key: "bricohogar", + label: "Bricohogar", + values: [iconCross, iconCross, iconCheck], + }, ]; const optionalRows: RowData[] = [ - { key: "accidentes", label: "Accidentes", values: [iconCross, "Opcional", "Opcional"] }, - { key: "mascotas", label: "Mascotas", values: [iconCross, "Opcional", "Opcional"] }, - { key: "vehículos-y-motos-en-garaje", label: "Vehículos y motos en garaje", values: [iconCross, "Opcional", "Opcional"] }, - { key: "robo-objetos-valor-especial", label: "Robo de objetos de valor especial", values: [iconCross, iconCross, "Opcional"] }, + { + key: "accidentes", + label: "Accidentes", + values: [iconCross, "Opcional", "Opcional"], + }, + { + key: "mascotas", + label: "Mascotas", + values: [iconCross, "Opcional", "Opcional"], + }, + { + key: "vehículos-y-motos-en-garaje", + label: "Vehículos y motos en garaje", + values: [iconCross, "Opcional", "Opcional"], + }, + { + key: "robo-objetos-valor-especial", + label: "Robo de objetos de valor especial", + values: [iconCross, iconCross, "Opcional"], + }, ]; function renderRows(rowsData: RowData[]) { @@ -79,27 +144,29 @@ function MobileTable({ rowsData }: { rowsData: RowData[] }) { return (
{rowsData.map(({ key, label, values }) => ( -
-
- {label} -
-
- {columns.slice(1).map((col, i) => ( -
- {col.label} - {values[i]} -
- ))} -
-
+
+
+ {label} +
+
+ {columns.slice(1).map((col, i) => ( +
+ + {col.label} + + {values[i]} +
+ ))} +
+
))}
); @@ -119,7 +186,7 @@ function RouteComponent() { return (
- +

Seguro de Hogar

@@ -150,18 +217,16 @@ function RouteComponent() {
- {isMobile ? ( - - ) : ( - +
{columns.map((column) => ( - {column.label} + + {column.label} + ))} {renderRows(rows)}
- )}
@@ -171,7 +236,9 @@ function RouteComponent() { {columns.map((column) => ( - {column.label} + + {column.label} + ))} {renderRows(optionalRows)} diff --git a/src/routes/seguros/mascotas/caballos.tsx b/src/routes/seguros/mascotas/caballos.tsx index 3574c0a..5ecca52 100644 --- a/src/routes/seguros/mascotas/caballos.tsx +++ b/src/routes/seguros/mascotas/caballos.tsx @@ -37,7 +37,7 @@ export const Route = createFileRoute("/seguros/mascotas/caballos")({ function RouteComponent() { return (
- +

Seguro de Caballos

diff --git a/src/routes/seguros/mascotas/index.tsx b/src/routes/seguros/mascotas/index.tsx index 04f7fa2..d8da143 100644 --- a/src/routes/seguros/mascotas/index.tsx +++ b/src/routes/seguros/mascotas/index.tsx @@ -32,25 +32,37 @@ export const Route = createFileRoute("/seguros/mascotas/")({ }); function RouteComponent() { + const navigate = Route.useNavigate(); return (
-
- +
+ + navigate({ to: "/seguros/mascotas/perros", viewTransition: true }) + } + >

Seguros de Perros

-
- + + navigate({ to: "/seguros/mascotas/caballos", viewTransition: true }) + } + >

Seguro de Caballos

-
-
); diff --git a/src/routes/seguros/mascotas/perros.tsx b/src/routes/seguros/mascotas/perros.tsx index cf2d8d0..67693d0 100644 --- a/src/routes/seguros/mascotas/perros.tsx +++ b/src/routes/seguros/mascotas/perros.tsx @@ -39,7 +39,7 @@ export const Route = createFileRoute("/seguros/mascotas/perros")({ function RouteComponent() { return (
- +

Seguro de Perros

diff --git a/src/routes/seguros/salud.tsx b/src/routes/seguros/salud.tsx index 86a6bce..2d1f17d 100644 --- a/src/routes/seguros/salud.tsx +++ b/src/routes/seguros/salud.tsx @@ -38,7 +38,7 @@ export const Route = createFileRoute("/seguros/salud")({ function RouteComponent() { return (
- +

Seguro de Salud

@@ -55,16 +55,15 @@ function RouteComponent() {
-

- Hay cosas que cuando llegan, te cambian la vida, como el seguro de - Salud Integral de Helvetia. Un seguro de Salud COMPLETO y SIN COPAGOS - hasta el 11º uso. -

- +

+ Hay cosas que cuando llegan, te cambian la vida, como el seguro de + Salud Integral de Helvetia. Un seguro de Salud COMPLETO y SIN + COPAGOS hasta el 11º uso. +

{dataCardDemo?.map((pc) => ( @@ -98,17 +97,17 @@ function RouteComponent() { }} >
    -
  • - Medicina general
  • -
  • - Urgencias hospitalarias
  • -
  • - Urgencias domiciliarias
  • -
  • - Especialidades médicas
  • -
  • - Asistencia médica 24 horas
  • -
  • - Pruebas diagnósticas
  • -
  • - Asistencia médica en el extranjero
  • -
  • - Hospitalización
  • -
  • - Segunda opinión médica
  • -
  • - Complemento bucodental
  • -
  • - Prótesis internas
  • +
  • 〰️ Medicina general
  • +
  • 〰️ Urgencias hospitalarias
  • +
  • 〰️ Urgencias domiciliarias
  • +
  • 〰️ Especialidades médicas
  • +
  • 〰️ Asistencia médica 24 horas
  • +
  • 〰️ Pruebas diagnósticas
  • +
  • 〰️ Asistencia médica en el extranjero
  • +
  • 〰️ Hospitalización
  • +
  • 〰️ Segunda opinión médica
  • +
  • 〰️ Complemento bucodental
  • +
  • 〰️ Prótesis internas
    -
  • - Psicología
  • -
  • - Podología
  • +
  • 〰️ Psicología
  • +
  • 〰️ Podología
  • - - Otros tratamientos especiales (oxigenoterapia, + 〰️ Otros tratamientos especiales (oxigenoterapia, laserterapia, litroticia extracorpórea renal, diálisis, quimioterapia, radioterapia...)
  • - - Dermatoscopia digital - detección precoz del melanoma + 〰️ Dermatoscopia digital - detección precoz del melanoma
  • -
  • - Dianas terapéuticas - tratamiento oncológico
  • +
  • 〰️ Dianas terapéuticas - tratamiento oncológico
  • - - Cirugía robotizada en intervenciones de cáncer de + 〰️ Cirugía robotizada en intervenciones de cáncer de próstata con el sistema Da Vinci
  • -
  • - Cirugía de la mama sana
  • -
  • - Cirugía esófago de Barret
  • -
  • - Rehabilitación cardiaca tras infarto
  • -
  • - Estudio biomecánico de la pisada
  • -
  • - Rehabilitación del suelo pélvico
  • +
  • 〰️ Cirugía de la mama sana
  • +
  • 〰️ Cirugía esófago de Barret
  • +
  • 〰️ Rehabilitación cardiaca tras infarto
  • +
  • 〰️ Estudio biomecánico de la pisada
  • +
  • 〰️ Rehabilitación del suelo pélvico
  • - - Rehabilitación vestibular para patología de oído + 〰️ Rehabilitación vestibular para patología de oído interno
@@ -163,11 +162,11 @@ function RouteComponent() { }} >
    -
  • - Diagnóstico y tratamiento de la infertilidad
  • {" "} -
  • - Programa de preparación al parto
  • {" "} -
  • - Test de cribado prenatal no invasivo
  • -
  • - Cuidados posparto
  • {" "} -
  • - Planificación familiar
  • +
  • 〰️ Diagnóstico y tratamiento de la infertilidad
  • {" "} +
  • 〰️ Programa de preparación al parto
  • {" "} +
  • 〰️ Test de cribado prenatal no invasivo
  • +
  • 〰️ Cuidados posparto
  • {" "} +
  • 〰️ Planificación familiar
    -
  • - Llamadas, videollamadas, chat médico online
  • -
  • - Sin copagos y sin límite de consultas
  • -
  • - Medicina general y 29 especialidades
  • -
  • - Prescripciones para pruebas y medicamentos
  • +
  • 〰️ Llamadas, videollamadas, chat médico online
  • +
  • 〰️ Sin copagos y sin límite de consultas
  • +
  • 〰️ Medicina general y 29 especialidades
  • +
  • 〰️ Prescripciones para pruebas y medicamentos
  • - - Selfie health: medidor de indicadores de salud desde + 〰️ Selfie health: medidor de indicadores de salud desde tu móvil (tensión, frecuencia cardiaca, estrés...)
diff --git a/src/routes/seguros/vehiculos/coche.tsx b/src/routes/seguros/vehiculos/coche.tsx index 112bd23..17da764 100644 --- a/src/routes/seguros/vehiculos/coche.tsx +++ b/src/routes/seguros/vehiculos/coche.tsx @@ -43,7 +43,7 @@ export const Route = createFileRoute("/seguros/vehiculos/coche")({ function RouteComponent() { return (
- +

Seguro de coches

diff --git a/src/routes/seguros/vehiculos/index.tsx b/src/routes/seguros/vehiculos/index.tsx index 6dea3db..5773ada 100644 --- a/src/routes/seguros/vehiculos/index.tsx +++ b/src/routes/seguros/vehiculos/index.tsx @@ -8,11 +8,19 @@ export const Route = createFileRoute("/seguros/vehiculos/")({ }); function RouteComponent() { + const navigate = Route.useNavigate(); return ( <>
-
- +
+ + navigate({ to: "/seguros/vehiculos/coche", viewTransition: true }) + } + >

Seguros de Coche

-
- + + navigate({ to: "/seguros/vehiculos/moto", viewTransition: true }) + } + >

Seguro de Motos

-
diff --git a/src/routes/seguros/vehiculos/moto.tsx b/src/routes/seguros/vehiculos/moto.tsx index f4b7fc7..b25ddb0 100644 --- a/src/routes/seguros/vehiculos/moto.tsx +++ b/src/routes/seguros/vehiculos/moto.tsx @@ -33,7 +33,7 @@ export const Route = createFileRoute("/seguros/vehiculos/moto")({ function RouteComponent() { return (
- +

Seguro de motos

diff --git a/src/routes/seguros/vida.tsx b/src/routes/seguros/vida.tsx index 7ccd84f..f27bc4a 100644 --- a/src/routes/seguros/vida.tsx +++ b/src/routes/seguros/vida.tsx @@ -67,7 +67,7 @@ export const Route = createFileRoute("/seguros/vida")({ function RouteComponent() { return (
- +

Seguro de Vida

@@ -97,7 +97,7 @@ function RouteComponent() {
-
+
{columns.map((column) => ( {column.label} @@ -239,7 +239,7 @@ function RouteComponent() { isZoomed width={400} height={300} - src="https://images.unsplash.com/photo-1522125670776-3c7abb882bc2?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" + src="https://images.unsplash.com/photo-1586769852836-bc069f19e1b6?ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&q=80&w=1170" alt="prueba" /> diff --git a/src/styles/app.css b/src/styles/app.css index 47639db..3c3c017 100644 --- a/src/styles/app.css +++ b/src/styles/app.css @@ -1,3 +1,4 @@ +@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @@ -21,6 +22,10 @@ } } +.font-outfit { + font-family: 'Outfit', sans-serif; +} + .main-lay { background-image: url("https://images.unsplash.com/photo-1475503572774-15a45e5d60b9?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D"); } \ No newline at end of file diff --git a/src/utils/sitemap.ts b/src/utils/sitemap.ts index 5030ea6..58c8bef 100644 --- a/src/utils/sitemap.ts +++ b/src/utils/sitemap.ts @@ -1,17 +1,53 @@ -import { type FileRouteTypes } from "@/routeTree.gen"; -import { Sitemap } from "tanstack-router-sitemap"; +import type { Sitemap } from "tanstack-router-sitemap"; -// This will become a string literal union of all your routes -export type TRoutes = FileRouteTypes["fullPaths"]; - -// Define your sitemap -export const sitemap: Sitemap = { +type MyRoutes = string; +export const sitemap: Sitemap = { siteUrl: "https://victoriaseguros.es", defaultPriority: 0.5, routes: { + "/": { + priority: 1, + changeFrequency: "daily", + }, + "/inicio": { + priority: 1, + changeFrequency: "daily", + }, "/seguros": { priority: 1, changeFrequency: "daily", }, + "/seguros/vida": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/hogar": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/salud": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/decesos": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/vehiculos/coche": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/mascotas": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/mascotas/perros": { + priority: 1, + changeFrequency: "daily", + }, + "/seguros/mascotas/caballo": { + priority: 1, + changeFrequency: "daily", + }, }, -}; \ No newline at end of file +};