File: /var/www/indoadvisory_new/webapp/src/renderer.js
import { jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
import { jsxRenderer } from 'hono/jsx-renderer';
export const renderer = jsxRenderer(({ children, title = "IndoAdvisory - Penasihat Investasi Terpercaya" }) => {
return (_jsxs("html", { lang: "id", children: [_jsxs("head", { children: [_jsx("meta", { charset: "UTF-8" }), _jsx("meta", { name: "viewport", content: "width=device-width, initial-scale=1.0" }), _jsx("title", { children: title }), _jsx("meta", { name: "description", content: "Firma konsultan private equity terkemuka di Indonesia. Kami menyediakan layanan valuasi perusahaan, persiapan IPO, dan konsultasi investasi untuk pertumbuhan bisnis Anda." }), _jsx("meta", { name: "keywords", content: "private equity, investasi, valuasi perusahaan, IPO, konsultan keuangan, Indonesia, Jakarta" }), _jsx("script", { src: "https://cdn.tailwindcss.com" }), _jsx("script", { dangerouslySetInnerHTML: { __html: `
tailwind.config = {
theme: {
extend: {
colors: {
// McKinsey-inspired professional palette
primary: {
50: '#f8fafc',
100: '#f1f5f9',
200: '#e2e8f0',
300: '#cbd5e1',
400: '#94a3b8',
500: '#64748b',
600: '#475569',
700: '#334155',
800: '#1e293b',
900: '#0f172a'
},
mckinsey: {
blue: '#0073e6',
darkblue: '#003d73',
navy: '#001f3f',
gray: '#4a5568',
lightgray: '#f7fafc',
accent: '#00b4d8'
},
secondary: {
50: '#f8fafc',
100: '#f1f5f9',
200: '#e2e8f0',
600: '#475569',
700: '#334155',
800: '#1e293b',
900: '#0f172a'
}
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
display: ['Inter', 'system-ui', 'sans-serif']
}
}
}
}
` } }), _jsx("link", { href: "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css", rel: "stylesheet" }), _jsx("link", { href: "/static/style.css", rel: "stylesheet" }), _jsx("style", { children: `
html {
scroll-behavior: smooth;
font-family: 'Inter', system-ui, sans-serif;
}
.mckinsey-gradient {
background: linear-gradient(135deg, #0073e6 0%, #003d73 50%, #001f3f 100%);
}
.mckinsey-card {
background: #ffffff;
border: 1px solid #e2e8f0;
transition: all 0.2s ease;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
}
.mckinsey-card:hover {
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, 0.15);
transform: translateY(-2px);
border-color: #cbd5e1;
}
.mckinsey-section {
background: #f8fafc;
}
.mckinsey-text {
color: #334155;
line-height: 1.6;
}
.mckinsey-heading {
color: #1e293b;
font-weight: 600;
letter-spacing: -0.025em;
}
.mckinsey-accent {
color: #0073e6;
}
.mckinsey-btn {
background: #0073e6;
color: white;
font-weight: 500;
letter-spacing: 0.025em;
transition: all 0.2s ease;
}
.mckinsey-btn:hover {
background: #003d73;
box-shadow: 0 4px 8px rgba(0, 115, 230, 0.25);
}
.mckinsey-btn-outline {
border: 2px solid #0073e6;
color: #0073e6;
background: transparent;
font-weight: 500;
transition: all 0.2s ease;
}
.mckinsey-btn-outline:hover {
background: #0073e6;
color: white;
}
/* McKinsey Article Content Styling */
.mckinsey-article-content {
font-family: 'Inter', system-ui, sans-serif;
line-height: 1.8;
color: #334155;
}
.mckinsey-article-content h2 {
color: #1e293b;
font-weight: 700;
font-size: 1.75rem;
margin: 2.5rem 0 1rem 0;
border-bottom: 3px solid #0073e6;
padding-bottom: 0.5rem;
}
.mckinsey-article-content h3 {
color: #1e293b;
font-weight: 600;
font-size: 1.375rem;
margin: 2rem 0 0.75rem 0;
}
.mckinsey-article-content h4 {
color: #0073e6;
font-weight: 600;
font-size: 1.125rem;
margin: 1.5rem 0 0.5rem 0;
}
.mckinsey-article-content p {
margin: 1.25rem 0;
font-size: 1.125rem;
line-height: 1.8;
}
.mckinsey-article-content ul, .mckinsey-article-content ol {
margin: 1.5rem 0;
padding-left: 1.5rem;
}
.mckinsey-article-content li {
margin: 0.75rem 0;
font-size: 1.125rem;
line-height: 1.7;
}
.mckinsey-article-content blockquote {
border-left: 4px solid #0073e6;
background: #f8fafc;
padding: 1.5rem 2rem;
margin: 2rem 0;
font-style: italic;
font-weight: 500;
color: #475569;
}
.mckinsey-article-content strong {
color: #1e293b;
font-weight: 700;
}
.mckinsey-article-content em {
color: #0073e6;
font-style: normal;
font-weight: 600;
}
.mckinsey-article-content code {
background: #f1f5f9;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-family: 'Monaco', monospace;
font-size: 0.875rem;
color: #003d73;
}
` })] }), _jsxs("body", { class: "antialiased", children: [children, _jsx("script", { dangerouslySetInnerHTML: { __html: `
// Mobile menu toggle
function toggleMenu() {
const menu = document.getElementById('mobile-menu');
menu.classList.toggle('hidden');
}
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
});
});
// Contact form submission
function submitContact(event) {
event.preventDefault();
const formData = new FormData(event.target);
const data = Object.fromEntries(formData);
// Show success message
const successDiv = document.getElementById('contact-success');
successDiv.classList.remove('hidden');
event.target.reset();
// Hide message after 5 seconds
setTimeout(() => {
successDiv.classList.add('hidden');
}, 5000);
}
// Client carousel auto-scroll functionality
let autoScrollInterval;
let isPaused = false;
let currentPosition = 0;
function initializeClientCarousel() {
const carousel = document.getElementById('client-carousel');
const showcaseSection = document.getElementById('client-showcase-section');
if (!carousel || !showcaseSection) return;
const cards = carousel.querySelectorAll('.flex-none');
if (cards.length === 0) return;
const cardCount = cards.length / 2; // We duplicate cards for seamless loop
const cardWidth = 408; // 384px + 24px margin
const maxPosition = cardCount * cardWidth;
function autoScroll() {
if (isPaused) return;
currentPosition += cardWidth;
// Reset to beginning when we've scrolled through all original cards
if (currentPosition >= maxPosition) {
currentPosition = 0;
}
carousel.style.transform = 'translateX(-' + currentPosition + 'px)';
}
// Start auto-scroll
autoScrollInterval = setInterval(autoScroll, 3000);
// Pause on hover over the entire client showcase section
showcaseSection.addEventListener('mouseenter', () => {
isPaused = true;
});
showcaseSection.addEventListener('mouseleave', () => {
isPaused = false;
});
}
// Initialize carousel when DOM is loaded
document.addEventListener('DOMContentLoaded', initializeClientCarousel);
` } })] })] }));
});