{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "staggered-faq-section", "type": "registry:ui", "title": "StaggeredFAQSection", "description": "A responsive FAQ component with animated text reveals and customizable content.", "dependencies": [ "motion" ], "registryDependencies": [ "accordion" ], "files": [ { "path": "registry/ruixenui/staggered-faq-section.tsx", "content": "\"use client\";\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\";\nimport { BlurredStagger } from \"@/components/ui/blurred-stagger-text\";\nimport Link from \"next/link\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface FAQItem {\n id: string;\n question: string;\n answer: string;\n}\n\nexport interface StaggeredFAQProps {\n title?: string;\n subtitle?: string;\n supportText?: string;\n supportLink?: string;\n supportLinkText?: string;\n faqItems: FAQItem[];\n className?: string;\n hideSupport?: boolean;\n}\n\nexport default function StaggeredFAQSection({\n title = \"StaggeredFAQ\",\n subtitle = \"Everything you need to know about Ruixen UI\",\n supportText = \"Can't find what you're looking for? Reach out to our\",\n supportLink = \"#\",\n supportLinkText = \"Ruixen UI support team\",\n faqItems,\n className,\n hideSupport = false,\n}: StaggeredFAQProps) {\n return (\n
\n
\n
\n
\n

{title}

\n

\n {subtitle}\n

\n {!hideSupport && (\n \n )}\n
\n\n
\n \n {faqItems.map((item) => (\n \n \n {item.question}\n \n \n \n \n \n ))}\n \n
\n\n {!hideSupport && (\n

\n {supportText}{\" \"}\n \n {supportLinkText}\n \n

\n )}\n
\n
\n
\n );\n}\n", "type": "registry:ui", "target": "components/ruixen/staggered-faq-section.tsx" }, { "path": "components/ui/blurred-stagger-text.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\n\nimport { motion } from \"motion/react\";\n\nexport const BlurredStagger = ({\n text = \"built by ruixen.com\",\n}: {\n text: string;\n}) => {\n const headingText = text;\n\n const container = {\n hidden: { opacity: 0 },\n show: {\n opacity: 1,\n transition: {\n staggerChildren: 0.015,\n },\n },\n };\n\n const letterAnimation = {\n hidden: {\n opacity: 0,\n filter: \"blur(10px)\",\n },\n show: {\n opacity: 1,\n filter: \"blur(0px)\",\n },\n };\n\n return (\n <>\n
\n \n {headingText.split(\"\").map((char, index) => (\n \n {char === \" \" ? \"\\u00A0\" : char}\n \n ))}\n \n
\n \n );\n};\n", "type": "registry:ui", "target": "components/ui/blurred-stagger-text.tsx" } ] }