SurfSense/surfsense_web/components/homepage/features-card.tsx

86 lines
2.9 KiB
TypeScript
Raw Normal View History

2025-10-02 12:43:43 -07:00
import { Sliders, Users, Workflow } from "lucide-react";
import type { ReactNode } from "react";
import { Card, CardContent, CardHeader } from "@/components/ui/card";
2025-10-02 18:10:07 -07:00
export function FeaturesCards() {
2025-10-02 12:43:43 -07:00
return (
<section className="py-2 md:py-8 dark:bg-transparent">
2025-10-02 18:10:07 -07:00
<div className="@container mx-auto max-w-7xl">
<div className="text-center">
<h2 className="text-balance text-4xl font-semibold lg:text-5xl">
2025-10-02 18:36:01 -07:00
Your Team's AI-Powered Knowledge Hub
2025-10-02 18:10:07 -07:00
</h2>
<p className="mt-4">
Powerful features designed to enhance collaboration, boost productivity, and streamline
your workflow.
</p>
</div>
2025-10-02 12:43:43 -07:00
<div className="@min-4xl:max-w-full @min-4xl:grid-cols-3 mx-auto mt-8 grid max-w-sm gap-6 *:text-center md:mt-16">
<Card className="group shadow-black-950/5">
<CardHeader className="pb-3">
<CardDecorator>
2025-10-02 18:10:07 -07:00
<Workflow className="size-6" aria-hidden />
2025-10-02 12:43:43 -07:00
</CardDecorator>
2025-10-02 18:10:07 -07:00
<h3 className="mt-6 font-medium">Streamlined Workflow</h3>
2025-10-02 12:43:43 -07:00
</CardHeader>
<CardContent>
2025-10-02 18:10:07 -07:00
<p className="text-sm">
Centralize all your knowledge and resources in one intelligent workspace. Find what
you need instantly and accelerate decision-making.
</p>
2025-10-02 12:43:43 -07:00
</CardContent>
</Card>
<Card className="group shadow-black-950/5">
<CardHeader className="pb-3">
<CardDecorator>
2025-10-02 18:10:07 -07:00
<Users className="size-6" aria-hidden />
2025-10-02 12:43:43 -07:00
</CardDecorator>
2025-10-02 18:10:07 -07:00
<h3 className="mt-6 font-medium">Seamless Collaboration</h3>
2025-10-02 12:43:43 -07:00
</CardHeader>
<CardContent>
<p className="text-sm">
2025-10-02 18:10:07 -07:00
Work together effortlessly with real-time collaboration tools that keep your entire
team aligned.
2025-10-02 12:43:43 -07:00
</p>
</CardContent>
</Card>
<Card className="group shadow-black-950/5">
<CardHeader className="pb-3">
<CardDecorator>
2025-10-02 18:10:07 -07:00
<Sliders className="size-6" aria-hidden />
2025-10-02 12:43:43 -07:00
</CardDecorator>
2025-10-02 18:10:07 -07:00
<h3 className="mt-6 font-medium">Fully Customizable</h3>
2025-10-02 12:43:43 -07:00
</CardHeader>
<CardContent>
2025-10-02 18:10:07 -07:00
<p className="text-sm">
2026-02-03 15:01:51 -08:00
Choose from 100+ leading LLMs, seamlessly calling any model on demand. Even run
on-prem local LLM inference via vLLM, Ollama, llama.cpp, LM Studio, and more.
2025-10-02 18:10:07 -07:00
</p>
2025-10-02 12:43:43 -07:00
</CardContent>
</Card>
</div>
</div>
</section>
);
}
const CardDecorator = ({ children }: { children: ReactNode }) => (
<div
aria-hidden
2026-02-03 15:01:51 -08:00
className="relative mx-auto size-36 mask-[radial-gradient(ellipse_50%_50%_at_50%_50%,#000_70%,transparent_100%)]"
2025-10-02 12:43:43 -07:00
>
2026-02-03 15:01:51 -08:00
<div className="absolute inset-0 [--border:black] dark:[--border:white] bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)] bg-size-[24px_24px] opacity-10" />
2025-10-02 12:43:43 -07:00
<div className="bg-background absolute inset-0 m-auto flex size-12 items-center justify-center border-t border-l">
{children}
</div>
</div>
);