{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "stepper", "title": "Stepper", "description": "A composable vertical stepper component with animated indicators, separators, and size variants.", "dependencies": [ "lucide-react" ], "files": [ { "path": "registry/custom-ui/stepper.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport type StepperSize = \"sm\" | \"default\" | \"lg\";\nexport type StepperStatus = \"complete\" | \"current\" | \"upcoming\";\n\nconst StepperContext = React.createContext<{ size: StepperSize }>({\n size: \"default\",\n});\n\nconst StepperItemContext = React.createContext<{ status: StepperStatus }>({\n status: \"upcoming\",\n});\n\nfunction Stepper({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"ol\"> & { size?: StepperSize }) {\n return (\n \n \n \n );\n}\n\nfunction StepperItem({\n className,\n status = \"upcoming\",\n ...props\n}: React.ComponentProps<\"li\"> & { status?: StepperStatus }) {\n const { size } = React.useContext(StepperContext);\n\n return (\n \n [data-slot=stepper-separator]]:hidden\",\n size === \"sm\" && \"gap-2 pb-4\",\n size === \"default\" && \"gap-2.5 pb-6\",\n size === \"lg\" && \"gap-3 pb-8\",\n className,\n )}\n data-slot=\"stepper-item\"\n data-status={status}\n {...props}\n />\n \n );\n}\n\nfunction StepperIndicator({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { size } = React.useContext(StepperContext);\n const { status } = React.useContext(StepperItemContext);\n\n return (\n \n \n \n \n );\n}\n\nfunction StepperSeparator({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { size } = React.useContext(StepperContext);\n const { status } = React.useContext(StepperItemContext);\n\n return (\n \n \n \n );\n}\n\nfunction StepperContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n \n );\n}\n\nfunction StepperTitle({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n const { size } = React.useContext(StepperContext);\n const { status } = React.useContext(StepperItemContext);\n\n return (\n \n );\n}\n\nfunction StepperDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n const { size } = React.useContext(StepperContext);\n const { status } = React.useContext(StepperItemContext);\n\n return (\n \n );\n}\n\nexport {\n Stepper,\n StepperItem,\n StepperIndicator,\n StepperSeparator,\n StepperContent,\n StepperTitle,\n StepperDescription,\n};\n", "type": "registry:ui", "target": "components/custom-ui/stepper.tsx" } ], "categories": [ "navigation", "progress" ], "type": "registry:ui" }