e30e75b5d4
Changesets / Create Version PR (push) Has been cancelled
Deploy Shadcn Registry / Deploy Production (push) Has been cancelled
Template Metrics / LOC + Bundle Size (push) Has been cancelled
Code Quality / Oxlint + Oxfmt (push) Has been cancelled
Code Quality / Template Sync (push) Has been cancelled
Code Quality / Build Changed Packages (push) Has been cancelled
Code Quality / Test Changed Packages (push) Has been cancelled
Deploy Expo Example / Deploy Production (push) Has been cancelled
Deploy Ink Example / Deploy Production (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-stream, 3.12) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.10) (push) Has been cancelled
Python Tests / pytest (assistant-ui-sync-server-api, 3.12) (push) Has been cancelled
59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { Cpu, PanelsTopLeft, Terminal, Zap } from "lucide-react";
|
|
|
|
const FEATURES = [
|
|
{
|
|
title: "Instant Chat UI",
|
|
description: "Drop in ChatGPT-style UX with theming and sensible defaults.",
|
|
icon: PanelsTopLeft,
|
|
},
|
|
{
|
|
title: "State Management",
|
|
description:
|
|
"Streaming, interruptions, retries, and multi-turn conversations.",
|
|
icon: Cpu,
|
|
},
|
|
{
|
|
title: "High Performance",
|
|
description:
|
|
"Optimized rendering and minimal bundle size for responsive streaming.",
|
|
icon: Zap,
|
|
},
|
|
{
|
|
title: "Works Everywhere",
|
|
description: "Vercel AI SDK, LangChain, or any LLM provider. React-based.",
|
|
icon: Terminal,
|
|
},
|
|
] as const;
|
|
|
|
export function FeatureHighlights() {
|
|
return (
|
|
<section className="flex flex-col gap-10">
|
|
<div className="flex flex-col gap-2">
|
|
<h2 className="max-w-[40ch] text-3xl font-semibold tracking-tight text-balance">
|
|
Everything you need to ship AI chat
|
|
</h2>
|
|
<p className="text-muted-foreground max-w-[48ch] text-pretty">
|
|
Production-ready components and state management.
|
|
</p>
|
|
</div>
|
|
|
|
<dl className="grid gap-8 sm:grid-cols-2 lg:grid-cols-4">
|
|
{FEATURES.map((feature) => {
|
|
const Icon = feature.icon;
|
|
return (
|
|
<div key={feature.title} className="flex flex-col gap-1.5">
|
|
<div className="bg-muted/30 mb-2.5 flex size-10 items-center justify-center rounded-lg border">
|
|
<Icon className="text-muted-foreground size-5" />
|
|
</div>
|
|
<dt className="font-medium">{feature.title}</dt>
|
|
<dd className="text-muted-foreground text-sm leading-relaxed text-pretty">
|
|
{feature.description}
|
|
</dd>
|
|
</div>
|
|
);
|
|
})}
|
|
</dl>
|
|
</section>
|
|
);
|
|
}
|