|
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