{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "accordion-indexed", "type": "registry:ui", "title": "Indexed Accordion", "description": "A numbered accordion with zero-padded indices, a boxed plus icon that rotates on hover and transforms on expand.", "dependencies": [ "lucide-react" ], "registryDependencies": [ "accordion" ], "files": [ { "path": "registry/ruixenui/accordion-indexed.tsx", "content": "\"use client\";\n\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"@/components/ui/accordion\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface AccordionIndexedItem {\n id: string;\n title: string;\n content: string;\n}\n\nexport interface AccordionIndexedProps {\n items?: AccordionIndexedItem[];\n defaultValue?: string;\n value?: string;\n onValueChange?: (value: string) => void;\n collapsible?: boolean;\n className?: string;\n}\n\nconst defaultItems: AccordionIndexedItem[] = [\n {\n id: \"strategy\",\n title: \"Strategy\",\n content:\n \"Every product starts with a question worth answering. We map user needs, business goals, and technical constraints into a focused direction before a single pixel is placed.\",\n },\n {\n id: \"design\",\n title: \"Design\",\n content:\n \"Interface decisions shaped by real usage patterns. Typography, spacing, and color are tuned until the experience feels inevitable rather than designed.\",\n },\n {\n id: \"engineering\",\n title: \"Engineering\",\n content:\n \"Components built for composition, not configuration. Server-first rendering, edge delivery, and zero-layout-shift interactions ship as defaults.\",\n },\n {\n id: \"motion\",\n title: \"Motion\",\n content:\n \"Animation as communication. Spring physics for direct manipulation, opacity curves for state transitions, and layout animations that preserve spatial context.\",\n },\n {\n id: \"systems\",\n title: \"Systems\",\n content:\n \"Tokens, primitives, and patterns that scale across surfaces. A single source of truth that keeps twenty screens consistent without slowing down any of them.\",\n },\n {\n id: \"delivery\",\n title: \"Delivery\",\n content:\n \"Incremental rollouts behind feature flags, performance budgets enforced in CI, and lighthouse scores that never regress. Production is the only environment that matters.\",\n },\n];\n\nexport default function AccordionIndexed({\n items = defaultItems,\n defaultValue = \"engineering\",\n value,\n onValueChange,\n collapsible = true,\n className,\n}: AccordionIndexedProps) {\n return (\n
\n \n {items.map((item, index) => (\n \n svg]:hidden\">\n
\n \n {String(index + 1).padStart(2, \"0\")}\n \n \n {item.title}\n \n
\n
\n \n

\n {item.content}\n

\n
\n \n ))}\n \n
\n );\n}\n", "type": "registry:ui", "target": "components/ruixen/accordion-indexed.tsx" } ] }