www_site/app/page.tsx

103 lines
6.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Link from "next/link";
import { ArrowRight, BluetoothIcon, ChipIcon, SparkIcon, WaveIcon } from "@/components/icons";
import { ArrowLink, DevPlaceholder, ProductVisual, SectionHeading } from "@/components/ui";
import { products } from "@/lib/content";
const capabilities = [
{ icon: BluetoothIcon, title: "Bluetooth", copy: "稳定连接" },
{ icon: WaveIcon, title: "Audio", copy: "更好的声音体验" },
{ icon: ChipIcon, title: "Embedded", copy: "可靠的硬件与固件" },
{ icon: SparkIcon, title: "AI", copy: "让设备更智能" },
];
export default function HomePage() {
return (
<>
<section className="relative isolate overflow-hidden hero-glow">
<div className="surface-grid pointer-events-none absolute inset-0 -z-10 opacity-60" />
<div className="container-shell grid min-h-[680px] items-center gap-12 py-20 lg:grid-cols-[0.8fr_1.2fr] lg:py-28">
<div>
<p className="eyebrow">Connecting technology with everyday life</p>
<h1 className="display-heading"></h1>
<p className="body-copy mt-8 max-w-md text-lg"></p>
<div className="mt-9 flex flex-wrap items-center gap-4">
<Link className="button-primary" href="/products"> <ArrowRight /></Link>
<Link className="text-sm font-semibold text-muted hover:text-copy" href="#technology"> <span className="ml-2"></span></Link>
</div>
</div>
<div className="relative lg:pl-8">
<div className="absolute -right-16 top-1/2 h-64 w-64 -translate-y-1/2 rounded-full bg-blue/10 blur-3xl" />
<ProductVisual label="AUDIO / HARDWARE CONCEPT" />
<div className="absolute -bottom-5 left-5 rounded-xl border border-line bg-panel/90 px-4 py-3 backdrop-blur sm:left-12">
<p className="text-[0.65rem] uppercase tracking-[0.2em] text-subtle">Product first</p>
<p className="mt-1 text-sm text-copy"></p>
</div>
</div>
</div>
</section>
<section className="section-rule py-24 sm:py-32">
<div className="container-shell">
<div className="flex flex-col justify-between gap-8 sm:flex-row sm:items-end">
<SectionHeading eyebrow="Products" title="为真实场景,打造可靠的蓝牙周边。" description="产品中心将由结构化内容驱动。当前资料尚未确认,以下内容仅用于开发阶段验证模板。" />
<ArrowLink href="/products"></ArrowLink>
</div>
<div className="mt-14 grid gap-5 lg:grid-cols-2">
{products.map((product) => (
<Link className="group grid gap-5 rounded-2xl border border-line bg-panel/60 p-4 transition-colors hover:border-blue/60 sm:grid-cols-[0.9fr_1.1fr] sm:p-5" href={`/products/${product.slug}`} key={product.slug}>
<ProductVisual accent={product.accent} label={product.category.toUpperCase()} />
<div className="flex flex-col justify-center p-2 sm:p-4">
<DevPlaceholder>{product.shortLabel}</DevPlaceholder>
<p className="mt-5 text-xs font-semibold uppercase tracking-[0.18em] text-subtle">{product.category}</p>
<h3 className="mt-3 text-2xl font-semibold tracking-[-0.03em] text-copy">{product.name}</h3>
<p className="mt-3 text-sm leading-7 text-muted">{product.summary}</p>
<span className="mt-6 inline-flex items-center gap-2 text-sm font-semibold text-cyan"> <ArrowRight /></span>
</div>
</Link>
))}
</div>
</div>
</section>
<section className="section-rule py-24 sm:py-32" id="technology">
<div className="container-shell">
<SectionHeading eyebrow="Technology" title="从无线连接到嵌入式开发,关注产品背后的核心技术。" description="以硬件经验为基础,持续探索可靠连接、音频体验、嵌入式系统与 AI 在设备中的应用。" tone="cyan" />
<div className="mt-14 grid border-y border-line sm:grid-cols-2 lg:grid-cols-4">
{capabilities.map(({ icon: Icon, title, copy }, index) => (
<div className="flex items-start gap-4 border-line py-7 sm:px-6 lg:border-r lg:first:pl-0 lg:last:border-r-0" key={title}>
<span className={index === 0 ? "text-blue" : index === 3 ? "text-cyan" : "text-copy"}><Icon /></span>
<div><h3 className="font-semibold text-copy">{title}</h3><p className="mt-2 text-sm text-muted">{copy}</p></div>
</div>
))}
</div>
</div>
</section>
<section className="section-rule overflow-hidden py-24 sm:py-32" id="ai-lab">
<div className="container-shell grid items-center gap-12 lg:grid-cols-[0.8fr_1.2fr]">
<div>
<p className="eyebrow eyebrow-cyan">AI Lab</p>
<h2 className="mt-5 max-w-md text-4xl font-semibold tracking-[-0.05em] text-copy sm:text-6xl"></h2>
<p className="body-copy mt-6 max-w-md"></p>
<Link className="button-secondary mt-8" href="/tts"> TTS <ArrowRight /></Link>
</div>
<div className="relative flex min-h-64 items-center justify-center overflow-hidden rounded-2xl border border-line bg-panel/50 p-8">
<div className="absolute inset-x-12 h-px bg-cyan/30" />
<div className="flex items-center gap-1 opacity-90" aria-hidden="true">
{[22, 42, 70, 105, 66, 132, 90, 48, 112, 78, 36, 58, 96, 50, 26].map((height, index) => <span className={`w-1 rounded-full ${index % 3 === 0 ? "bg-orange" : "bg-cyan"}`} style={{ height }} key={index} />)}
</div>
<span className="absolute bottom-5 right-5 text-[0.65rem] font-semibold uppercase tracking-[0.22em] text-subtle">Voice / exploration</span>
</div>
</div>
</section>
<section className="section-rule py-20 sm:py-24">
<div className="container-shell flex flex-col justify-between gap-8 rounded-2xl border border-line bg-panel/50 p-7 sm:flex-row sm:items-center sm:p-10">
<div><p className="eyebrow eyebrow-blue">About Kaotings</p><h2 className="mt-4 text-3xl font-semibold tracking-[-0.04em]"></h2></div>
<ArrowLink href="/about"></ArrowLink>
</div>
</section>
</>
);
}