# FAQ 14

> A simple FAQ block

A shadcn/ui block from the [@shadcnui-blocks](https://shadcnui-blocks.com) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/shadcnui-blocks/faq-14).

- Page, with a live preview: https://shadcn.exchange/r/shadcnui-blocks/faq-14
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/shadcnui-blocks/faq-14-light-799371251c7f2791.png
- Registry item: https://shadcnui-blocks.com/r/faq-14.json
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://shadcnui-blocks.com/r/faq-14.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- npm packages: `lucide-react`
- Registry items: `accordion`

## Files

### `src/registry/blocks/radix/faq-14/components/faq.tsx`

```tsx
import {
  CircleDollarSign,
  Clock,
  Package,
  PackageX,
  Plane,
  Waypoints,
} from "lucide-react";
import { cn } from "@/lib/utils";
import {
  Accordion,
  AccordionContent,
  AccordionItem,
  AccordionTrigger,
} from "@/registry/bases/radix/ui/accordion";

const faqs = [
  {
    question: "What is your return policy?",
    answer:
      "We offer a 30-day return policy on all unused products. Please ensure the item is in original packaging when returning.",
    icon: Package,
  },
  {
    question: "How long does shipping take?",
    answer:
      "Shipping typically takes 3-7 business days depending on your location.",
    icon: Clock,
  },
  {
    question: "Do you ship internationally?",
    answer:
      "Yes, we ship to most countries worldwide. Shipping fees and delivery times vary by destination.",
    icon: Plane,
  },
  {
    question: "How can I track my order?",
    answer:
      "After your order is shipped, you'll receive an email with a tracking link. You can also track your order in your account dashboard.",
    icon: Waypoints,
  },
  {
    question: "What payment methods do you accept?",
    answer: "We accept all major credit cards, PayPal, UPI, and net banking.",
    icon: CircleDollarSign,
  },
  {
    question: "Can I cancel or change my order?",
    answer:
      "Yes, you can cancel or modify your order within 2 hours of placing it. After that, the order may already be processed for shipment.",
    icon: PackageX,
  },
];

const FAQ = () => {
  return (
    <div className="mx-auto max-w-2xl px-6 py-12 sm:py-14">
      <h2 className="text-balance font-medium text-3xl tracking-tighter">
        Got questions? We've got answers
      </h2>
      <p className="mt-2.5 text-balance text-muted-foreground text-xl tracking-normal">
        Everything you need to know about ordering, shipping, and returns.
      </p>

      <div className="mx-auto mt-8 max-w-2xl">
        <Accordion collapsible defaultValue={faqs[0].question} type="single">
          {faqs.map((faq, index) => (
            <AccordionItem
              className="border not-last:border-b-0 bg-muted/35 last:border-b"
              key={`${faq.question}-${index}`}
              value={faq.question}
            >
              <AccordionTrigger className="rounded-none px-5 py-0 ps-0 text-base data-[state=open]:border-b">
                <div className="flex gap-2 divide-x">
                  <div
                    className={cn(
                      "flex items-center justify-center bg-muted/40 bg-size-[10px_10px] bg-fixed px-4",
                      {
                        "bg-[repeating-linear-gradient(315deg,color-mix(in_srgb,var(--border)_30%,transparent)_0,color-mix(in_srgb,var(--border)_30%,transparent)_1px,transparent_0,transparent_50%)]":
                          index % 2 === 0,
                        "bg-[repeating-linear-gradient(45deg,color-mix(in_srgb,var(--border)_30%,transparent)_0,color-mix(in_srgb,var(--border)_30%,transparent)_1px,transparent_0,transparent_50%)]":
                          index % 2 !== 0,
                      }
                    )}
                  >
                    <faq.icon className="size-5 fill-foreground/7" />
                  </div>
                  <span className="py-3.5 pl-2.5 font-medium">
                    {faq.question}
                  </span>
                </div>
              </AccordionTrigger>
              <AccordionContent className="relative bg-background px-5 py-5 pl-18 text-base text-foreground/75">
                {faq.answer}
                <div className="absolute inset-y-0 left-13 border-foreground/10 border-s border-dashed" />
              </AccordionContent>
            </AccordionItem>
          ))}
        </Accordion>
      </div>
    </div>
  );
};

export default FAQ;
```
