Corporation / react-demo.php
akra35567's picture
Upload 38 files
77df06f verified
<?php
require_once __DIR__ . '/src/Bootstrap.php';
\SoftEdge\Env::load(__DIR__);
\SoftEdge\Bootstrap::init();
include 'components/header.php';
?>
<!-- REACT DEMO PAGE -->
<section class="relative min-h-screen flex items-center justify-center overflow-hidden">
<!-- Background -->
<div class="absolute inset-0 -z-10">
<div class="absolute inset-0 bg-linear-to-br from-slate-950 via-slate-900 to-slate-950"></div>
<div class="absolute inset-0 opacity-30">
<div class="absolute top-20 left-20 w-96 h-96 bg-cyan-500/20 rounded-full blur-3xl"></div>
<div class="absolute bottom-20 right-20 w-96 h-96 bg-blue-500/20 rounded-full blur-3xl"></div>
</div>
</div>
<!-- Content -->
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20">
<div class="text-center space-y-12">
<!-- Badge -->
<div class="inline-block px-4 py-2 bg-cyan-500/10 rounded-full border border-cyan-500/20 backdrop-blur-sm">
<span class="text-cyan-400 text-sm font-semibold uppercase tracking-wider">
βš›οΈ React Integration Demo
</span>
</div>
<!-- Title -->
<div class="space-y-6">
<h1 class="text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-bold leading-tight">
<span class="block text-white mb-2">React + PHP</span>
<span class="block bg-linear-to-r from-cyan-400 via-blue-500 to-purple-500 bg-clip-text text-transparent">
IntegraΓ§Γ£o Completa
</span>
</h1>
<p class="text-base sm:text-lg md:text-xl text-gray-300 max-w-2xl mx-auto leading-relaxed">
DemonstraΓ§Γ£o da integraΓ§Γ£o perfeita entre React e PHP no SoftEdge Corporation website.
<br class="hidden sm:block">
Componentes modulares, estado compartilhado e performance otimizada.
</p>
</div>
<!-- React App Container -->
<div class="max-w-4xl mx-auto">
<div class="relative">
<div class="absolute inset-0 bg-linear-to-r from-cyan-500/10 via-blue-500/10 to-purple-500/10 rounded-3xl blur-3xl"></div>
<div class="relative bg-slate-900/60 backdrop-blur-xl border border-white/10 rounded-3xl p-8">
<!-- React App will be mounted here -->
<div id="root" class="min-h-[400px] flex items-center justify-center">
<div class="text-center space-y-4">
<div class="w-16 h-16 bg-cyan-500/20 rounded-full flex items-center justify-center mx-auto animate-pulse">
<i data-lucide="loader-2" class="w-8 h-8 text-cyan-400 animate-spin"></i>
</div>
<p class="text-gray-400">Carregando aplicaΓ§Γ£o React...</p>
</div>
</div>
<!-- Fallback for when React is not loaded -->
<noscript>
<div class="text-center py-8">
<i data-lucide="alert-triangle" class="w-16 h-16 text-yellow-400 mx-auto mb-4"></i>
<h3 class="text-xl font-bold text-white mb-2">JavaScript NecessΓ‘rio</h3>
<p class="text-gray-400">Esta pΓ‘gina requer JavaScript para funcionar corretamente.</p>
</div>
</noscript>
</div>
</div>
</div>
<!-- Info Cards -->
<div class="grid sm:grid-cols-3 gap-6 lg:gap-8 mt-16 max-w-4xl mx-auto">
<!-- Info 1 -->
<div class="text-center">
<div class="w-12 h-12 bg-cyan-500/10 rounded-xl flex items-center justify-center mx-auto mb-4">
<i data-lucide="zap" class="w-6 h-6 text-cyan-400"></i>
</div>
<h3 class="text-white font-semibold mb-2">Performance</h3>
<p class="text-gray-400 text-sm">Componentes otimizados com lazy loading</p>
</div>
<!-- Info 2 -->
<div class="text-center">
<div class="w-12 h-12 bg-blue-500/10 rounded-xl flex items-center justify-center mx-auto mb-4">
<i data-lucide="code-2" class="w-6 h-6 text-blue-400"></i>
</div>
<h3 class="text-white font-semibold mb-2">Modular</h3>
<p class="text-gray-400 text-sm">Componentes reutilizΓ‘veis e manutenΓ­veis</p>
</div>
<!-- Info 3 -->
<div class="text-center">
<div class="w-12 h-12 bg-purple-500/10 rounded-xl flex items-center justify-center mx-auto mb-4">
<i data-lucide="refresh-cw" class="w-6 h-6 text-purple-400"></i>
</div>
<h3 class="text-white font-semibold mb-2">DinΓ’mico</h3>
<p class="text-gray-400 text-sm">Estado reativo e interaΓ§Γ΅es fluidas</p>
</div>
</div>
<!-- Back to Home -->
<div class="pt-12">
<a href="index.php" class="inline-flex items-center gap-2 text-cyan-400 hover:text-cyan-300 transition-colors group">
<i data-lucide="arrow-left" class="w-5 h-5 group-hover:-translate-x-1 transition-transform"></i>
<span>Voltar ao inΓ­cio</span>
</a>
</div>
</div>
</div>
</section>
<!-- Load React App -->
<script>
// Load React app when DOM is ready
document.addEventListener('DOMContentLoaded', function() {
// Check if React bundle exists
fetch('/dist/main.js')
.then(response => {
if (response.ok) {
// Load React bundle
const script = document.createElement('script');
script.src = '/dist/main.js';
script.onload = function() {
console.log('React app loaded successfully');
};
script.onerror = function() {
console.error('Failed to load React app');
showFallback();
};
document.head.appendChild(script);
} else {
console.warn('React bundle not found, showing fallback');
showFallback();
}
})
.catch(error => {
console.error('Error checking React bundle:', error);
showFallback();
});
});
function showFallback() {
const root = document.getElementById('root');
if (root) {
root.innerHTML = `
<div class="text-center space-y-4">
<div class="w-16 h-16 bg-yellow-500/20 rounded-full flex items-center justify-center mx-auto">
<i data-lucide="alert-triangle" class="w-8 h-8 text-yellow-400"></i>
</div>
<h3 class="text-xl font-bold text-white">React App IndisponΓ­vel</h3>
<p class="text-gray-400 text-sm">O aplicativo React nΓ£o foi carregado. Execute <code class="bg-slate-800 px-2 py-1 rounded text-xs">npm run build</code> para gerar os arquivos.</p>
</div>
`;
}
}
</script>
<?php include 'components/footer.php'; ?>
<!-- SCRIPTS -->
<script src="https://unpkg.com/lucide@latest"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
// Initialize Lucide icons
lucide.createIcons();
});
</script>
<style>
/* Custom styles for React integration */
#root {
transition: opacity 0.3s ease;
}
#root.fade-in {
opacity: 1;
}
/* Loading animation */
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.animate-spin {
animation: spin 1s linear infinite;
}
/* Gradient animation */
@keyframes gradient-shift {
0%, 100% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
}
.bg-linear-to-r {
background-size: 200% 200%;
animation: gradient-shift 8s ease infinite;
}
</style>