import {
IconCreditCard,
IconLanguage,
IconLayoutDashboard,
IconShieldLock,
} from '@tabler/icons-react';
import type { ReactNode } from 'react';
import {
FeatureItem,
FeatureItemDescription,
FeatureItemIcon,
FeatureItemTitle,
} from '../ui/feature-item';
import { Section } from '../ui/section';
/*
* Feature grid. Adapted from Launch UI's "items" section (MIT) for Vite:
* lucide -> Tabler icons, and the copy genericized as a starting point for the
* generated app. Swap these for the capabilities that matter to your product.
*/
interface FeatureProps {
title: string;
description: string;
icon: ReactNode;
}
interface FeaturesProps {
title?: string;
items?: FeatureProps[] | false;
className?: string;
}
const DEFAULT_FEATURES: FeatureProps[] = [
{
title: 'Authentication',
description: 'Email, OAuth, and magic links, with sessions and route guards handled for you.',
icon: ,
},
{
title: 'Billing',
description: 'Plans, subscriptions, and invoices, with Stripe checkout and webhooks wired.',
icon: ,
},
{
title: 'Admin dashboard',
description:
'Users, roles, and organization settings, with the screens and permissions already built.',
icon: ,
},
{
title: 'Docs & i18n',
description:
'Searchable docs, five bundled languages, and browser locale detection, with English fallbacks already in place.',
icon: ,
},
];
export default function Features({
title = "The parts you'd rather not build twice.",
items = DEFAULT_FEATURES,
className,
}: FeaturesProps) {
return (