|
1 | 1 | import { LanguagesIcon } from "lucide-react";
|
2 | 2 | import { BrandIcons } from "../shared/brand-icons";
|
3 | 3 | import { Card } from "../ui/card";
|
| 4 | +import { getScopedI18n } from "~/locales/server"; |
| 5 | + |
| 6 | +export default async function Features() { |
| 7 | + const scopedT = await getScopedI18n("features"); |
| 8 | + const scopedTlibs = await getScopedI18n("features.libs"); |
4 | 9 |
|
5 |
| -export default function Features() { |
6 | 10 | return (
|
7 | 11 | <section>
|
8 |
| - <div className="container space-y-6 rounded-md bg-secondary py-14 lg:py-24 "> |
| 12 | + <div className="container space-y-6 rounded-md bg-secondary py-14 lg:py-24"> |
9 | 13 | <div className="mx-auto flex max-w-[58rem] flex-col items-center space-y-4 text-center">
|
10 |
| - <h2 className="font-heading text-4xl md:text-6xl">Features</h2> |
| 14 | + <h2 className="font-heading text-4xl md:text-6xl"> |
| 15 | + {scopedT("top")} |
| 16 | + </h2> |
11 | 17 | <p className="max-w-[85%] text-balance leading-normal text-primary/70 sm:text-lg sm:leading-7">
|
12 |
| - This template comes with features like Authentication, API routes, |
13 |
| - File uploading and more in Next.js App dir. |
| 18 | + {scopedT("details")} |
14 | 19 | </p>
|
15 | 20 | </div>
|
16 | 21 | <div className="mx-auto grid justify-center gap-4 text-center sm:grid-cols-2 md:max-w-[64rem] md:grid-cols-3">
|
17 | 22 | <Card className="flex h-[160px] flex-col justify-between rounded-md p-6">
|
18 | 23 | <BrandIcons.nextjs />
|
19 | 24 | <p className="text-balance text-sm text-muted-foreground">
|
20 |
| - App dir, Routing, Layouts, API routes, Server Components, Server |
21 |
| - actions. |
| 25 | + {scopedTlibs("nextjs")} |
22 | 26 | </p>
|
23 | 27 | </Card>
|
24 | 28 | <Card className="flex h-[160px] flex-col justify-between rounded-md p-6">
|
25 | 29 | <BrandIcons.shadcnUI />
|
26 | 30 |
|
27 | 31 | <p className="text-balance text-sm text-muted-foreground">
|
28 |
| - UI components built using Radix UI and styled with Tailwind CSS. |
| 32 | + {scopedTlibs("tailwindcss")} |
29 | 33 | </p>
|
30 | 34 | </Card>
|
31 | 35 | <Card className="flex h-[160px] flex-col justify-between rounded-md p-6">
|
32 | 36 | <BrandIcons.prisma />
|
33 | 37 |
|
34 | 38 | <p className="text-balance text-sm text-muted-foreground">
|
35 |
| - Using Postgres with Prisma ORM, hosted on Vercel Postgres. |
| 39 | + {scopedTlibs("postgres")} |
36 | 40 | </p>
|
37 | 41 | </Card>
|
38 | 42 | <Card className="flex h-[160px] flex-col justify-between rounded-md p-6">
|
39 | 43 | <BrandIcons.luciaAuth />
|
40 | 44 |
|
41 | 45 | <p className="text-balance text-sm text-muted-foreground">
|
42 |
| - Authentication and Authorization using LuciaAuth v3. |
| 46 | + {scopedTlibs("lucia")} |
43 | 47 | </p>
|
44 | 48 | </Card>
|
45 | 49 | <Card className="flex h-[160px] flex-col justify-between rounded-md p-6">
|
46 | 50 | <BrandIcons.uploadthing />
|
47 | 51 |
|
48 | 52 | <p className="text-balance text-sm text-muted-foreground">
|
49 |
| - Upload and preview files effortlessly with UploadThing. |
| 53 | + {scopedTlibs("uploadthing")} |
50 | 54 | </p>
|
51 | 55 | </Card>
|
52 | 56 | <Card className="flex h-[160px] flex-col justify-between p-6">
|
53 | 57 | <BrandIcons.resend />
|
54 | 58 |
|
55 | 59 | <p className="text-balance text-sm text-muted-foreground">
|
56 |
| - Create emails using React Email and Send with Resend. |
| 60 | + {scopedTlibs("reactEmail")} |
57 | 61 | </p>
|
58 | 62 | </Card>
|
59 | 63 | <Card className="flex h-[160px] flex-col justify-between p-6">
|
60 | 64 | <LanguagesIcon className="mx-auto h-12 w-12 fill-current" />
|
61 | 65 |
|
62 | 66 | <p className="text-balance text-sm text-muted-foreground">
|
63 |
| - Internationalization support with type-safe Next-International. |
| 67 | + {scopedTlibs("internationalization")} |
64 | 68 | </p>
|
65 | 69 | </Card>
|
66 | 70 | <Card className="flex h-[160px] flex-col justify-between p-6">
|
67 | 71 | <BrandIcons.stripe />
|
68 | 72 |
|
69 | 73 | <p className="text-balance text-sm text-muted-foreground">
|
70 |
| - Receive and process payments with Stripe. |
| 74 | + {scopedTlibs("stripe")} |
71 | 75 | </p>
|
72 | 76 | </Card>
|
73 | 77 | <Card className="flex h-[160px] flex-col justify-between p-6">
|
74 | 78 | <BrandIcons.vercel />
|
75 | 79 |
|
76 | 80 | <p className="text-balance text-sm text-muted-foreground">
|
77 |
| - Production and Preview deployments with Vercel. |
| 81 | + {scopedTlibs("vercel")} |
78 | 82 | </p>
|
79 | 83 | </Card>
|
80 | 84 | </div>
|
81 | 85 | <div className="mx-auto text-center md:max-w-[58rem]">
|
82 | 86 | <p className="leading-normal text-primary/70 sm:text-lg sm:leading-7">
|
83 |
| - ChadNext also includes Changelog & About page built using{" "} |
| 87 | + {scopedT('aboutMd')} |
84 | 88 | <a
|
85 | 89 | href="https://velite.js.org/"
|
86 | 90 | target="_blank"
|
87 | 91 | rel="noopener noreferrer"
|
88 |
| - className=" underline underline-offset-4" |
| 92 | + className="underline underline-offset-4" |
89 | 93 | >
|
90 | 94 | Velite
|
91 | 95 | </a>{" "}
|
|
0 commit comments