18Switch language to العربية
Tailwind CSSGet Started with Tailwind v4

Templates for the Web

Clean, modern templates. Copy and paste into your apps. Works with all React frameworks. Open Source. Free forever.

Files
app/testimonials-01/page.tsx
import { Testimonials } from "@/components/testimonials-01"
import { dictionary } from "@/registry/bases/base/blocks/testimonials-01/testimonials-01-dictionary"

export default async function Page({
  params,
}: {
  params?: Promise<{ lang?: string }>
}) {
  const { lang } = (await params) ?? {}
  const locale = lang === "ar" ? "ar" : "en"
  return <Testimonials dictionary={dictionary[locale]} lang={locale} />
}
Centered heading over a three-column grid of quote cards with avatar, name and role.
testimonials-01
testimonials-01
Files
app/testimonials-02/page.tsx
import { Testimonials } from "@/components/testimonials-02"
import { dictionary } from "@/registry/bases/base/blocks/testimonials-02/testimonials-02-dictionary"

export default async function Page({
  params,
}: {
  params?: Promise<{ lang?: string }>
}) {
  const { lang } = (await params) ?? {}
  const locale = lang === "ar" ? "ar" : "en"
  return <Testimonials dictionary={dictionary[locale]} lang={locale} />
}
Primary-colored band with marquee watermarks, a scrollable chat-bubble testimonial card and vertical category tabs.
testimonials-02
testimonials-02
Files
app/testimonials-03/page.tsx
import { Testimonials } from "@/components/testimonials-03"
import { dictionary } from "@/registry/bases/base/blocks/testimonials-03/testimonials-03-dictionary"

export default async function Page({
  params,
}: {
  params?: Promise<{ lang?: string }>
}) {
  const { lang } = (await params) ?? {}
  const locale = lang === "ar" ? "ar" : "en"
  return <Testimonials dictionary={dictionary[locale]} lang={locale} />
}
Centered looping carousel of large story cards with rating, date and portrait; neighbouring cards peek at reduced scale.
testimonials-03
testimonials-03