{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "step-navigation",
  "type": "registry:component",
  "title": "Step Navigation",
  "description": "Navigation controls for stepping through multi-page content.",
  "dependencies": [
    "@vllnt/ui@^0.2.1"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "registry/default/step-navigation/step-navigation.tsx",
      "content": "\"use client\";\n\nimport { memo } from \"react\";\n\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"@vllnt/ui\";\n\nexport type StepNavigationProps = {\n  canNext: boolean;\n  canPrev: boolean;\n  className?: string;\n  currentStep: number;\n  nextIcon?: ReactNode;\n  nextLabel?: string;\n  onNext: () => void;\n  onPrev: () => void;\n  previousIcon?: ReactNode;\n  previousLabel?: string;\n  stepLabel?: string;\n  totalSteps: number;\n};\n\n// eslint-disable-next-line max-lines-per-function -- Complex navigation with icons\nfunction StepNavigationImpl({\n  canNext,\n  canPrev,\n  className,\n  currentStep,\n  nextIcon,\n  nextLabel = \"Next\",\n  onNext,\n  onPrev,\n  previousIcon,\n  previousLabel = \"Prev\",\n  stepLabel = \"Section\",\n  totalSteps,\n}: StepNavigationProps): React.ReactNode {\n  return (\n    <nav\n      aria-label=\"Step navigation\"\n      className={cn(\n        \"fixed bottom-0 left-0 right-0 z-50\",\n        \"border-t border-neutral-200 bg-white\",\n        \"dark:border-neutral-800 dark:bg-black\",\n        className,\n      )}\n    >\n      <div className=\"mx-auto flex max-w-3xl items-center justify-between px-4 py-3\">\n        {/* Previous Button */}\n        <button\n          aria-label=\"Previous step\"\n          className={cn(\n            \"flex min-h-[44px] min-w-[44px] items-center justify-center\",\n            \"rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n            \"hover:bg-neutral-100 dark:hover:bg-neutral-900\",\n            \"disabled:pointer-events-none disabled:opacity-40\",\n          )}\n          disabled={!canPrev}\n          onClick={onPrev}\n          type=\"button\"\n        >\n          {previousIcon ?? (\n            <svg\n              aria-hidden=\"true\"\n              className=\"size-5\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path\n                d=\"m15 19-7-7 7-7\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                strokeWidth={2}\n              />\n            </svg>\n          )}\n          <span className=\"ml-1\">{previousLabel}</span>\n        </button>\n\n        {/* Center: Step Counter */}\n        <div className=\"text-sm tabular-nums text-neutral-600 dark:text-neutral-400\">\n          {stepLabel} {currentStep} / {totalSteps}\n        </div>\n\n        {/* Next Button */}\n        <button\n          aria-label=\"Next step\"\n          className={cn(\n            \"flex min-h-[44px] min-w-[44px] items-center justify-center\",\n            \"rounded-md px-3 py-2 text-sm font-medium transition-colors\",\n            \"hover:bg-neutral-100 dark:hover:bg-neutral-900\",\n            \"disabled:pointer-events-none disabled:opacity-40\",\n          )}\n          disabled={!canNext}\n          onClick={onNext}\n          type=\"button\"\n        >\n          <span className=\"mr-1\">{nextLabel}</span>\n          {nextIcon ?? (\n            <svg\n              aria-hidden=\"true\"\n              className=\"size-5\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              viewBox=\"0 0 24 24\"\n            >\n              <path\n                d=\"m9 5 7 7-7 7\"\n                strokeLinecap=\"round\"\n                strokeLinejoin=\"round\"\n                strokeWidth={2}\n              />\n            </svg>\n          )}\n        </button>\n      </div>\n    </nav>\n  );\n}\n\nexport const StepNavigation = memo(StepNavigationImpl);\nStepNavigation.displayName = \"StepNavigation\";\n",
      "type": "registry:component"
    }
  ],
  "version": "0.2.1",
  "stability": "stable"
}
