feature/implementacion de hub en EFC

This commit is contained in:
2026-06-08 07:19:29 -06:00
parent 6e2634d11b
commit 1c6b07be58
23 changed files with 2178 additions and 1039 deletions

View File

@@ -1,7 +1,12 @@
import React, { useState, useEffect, useRef } from 'react';
import { Link } from 'react-router-dom';
import { colors, tailwindClasses } from '../theme';
const HUB_URL = import.meta.env.VITE_HUB_URL || 'http://localhost:3001';
const hubLoginUrl = () => {
const returnTo = encodeURIComponent(`${window.location.origin}/auth/sso`);
return `${HUB_URL}/login?return_to=${returnTo}`;
};
export default function LandingAnimated() {
const [isScrolled, setIsScrolled] = useState(false);
const [activeSection, setActiveSection] = useState('inicio');
@@ -199,8 +204,8 @@ export default function LandingAnimated() {
</nav>
</div>
<div className="flex items-center space-x-4">
<Link
to="/login"
<a
href="/login"
className="px-6 py-2 rounded-full text-sm font-medium transition-all duration-200 shadow-lg hover:shadow-xl transform hover:-translate-y-0.5 text-white"
style={{
background: 'linear-gradient(to right, #1B2A41, #4DA6FF)',
@@ -213,7 +218,7 @@ export default function LandingAnimated() {
}}
>
Acceder
</Link>
</a>
</div>
</div>
</div>
@@ -313,8 +318,8 @@ export default function LandingAnimated() {
: 'opacity-0 translate-y-10'
}`}
>
<Link
to="/login"
<a
href="/login"
className="inline-flex items-center px-8 py-4 text-lg font-semibold transition-all duration-300 transform rounded-full shadow-2xl group hover:shadow-3xl hover:-translate-y-1 hover:scale-105"
style={{
color: '#1B2A41',
@@ -331,7 +336,7 @@ export default function LandingAnimated() {
<svg className="w-5 h-5 ml-2 transition-transform duration-200 group-hover:translate-x-1" fill="currentColor" viewBox="0 0 20 20">
<path fillRule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clipRule="evenodd" />
</svg>
</Link>
</a>
<button
onClick={() => scrollToSection('caracteristicas')}
className="inline-flex items-center px-8 py-4 text-lg font-semibold text-white transition-all duration-300 bg-transparent border-2 rounded-full group border-white/30 hover:border-white hover:bg-white/10 backdrop-blur-sm"