"use client" import { useRef, useState } from "react" import Link from "next/link" import { Icon } from "@iconify/react" import { ProductCrossPlatformSection } from "@/components/landing/product/product-cross-platform-section" import { ProductCta } from "@/components/landing/product/product-cta" import { ProductFeatureGrid } from "@/components/landing/product/product-feature-grid" import { ProductInteropSection } from "@/components/landing/product/product-interop-section" import { ProductShowcases } from "@/components/landing/product/product-showcases" import { ProductHero } from "@/components/landing/product/product-hero" import { ProductHighlights } from "@/components/landing/product/product-highlights" import { ProductIntegrations } from "@/components/landing/product/product-integrations" import type { ProductPageData } from "@/components/landing/product/product-data" import { useChromeIdentity } from "@/lib/hooks/use-chrome-identity" import { getAuthentikEnrollmentUrl } from "@/lib/auth/oidc-config" import { cn } from "@/lib/utils" function ProductHeader({ data, scrolled, }: { data: ProductPageData scrolled: boolean }) { const identity = useChromeIdentity() return (
UltiSuite / {data.name}
{identity ? ( {data.ctas.primary.label} ) : ( <> Créer un compte Se connecter )}
) } function ProductFooter({ data }: { data: ProductPageData }) { return ( ) } export function ProductPageShell({ data }: { data: ProductPageData }) { const scrollRef = useRef(null) const [scrolled, setScrolled] = useState(false) const accentStyle = { "--landing-glow-a": data.accent, "--landing-glow-b": data.accent, "--landing-glow-c": data.accent, "--landing-chip": `${data.accent}1a`, "--landing-chip-fg": data.accent, } as React.CSSProperties return (
{ const top = scrollRef.current?.scrollTop ?? 0 setScrolled((prev) => (top > 8 ? true : top <= 2 ? false : prev)) }} >
{data.showcases.length > 0 ? ( ) : data.featureGroups ? ( ) : null} {data.crossPlatformSection ? ( ) : null} {data.interopSection ? ( ) : null}
) }