init commit

This commit is contained in:
David Melendez
2026-01-14 22:44:08 +01:00
parent 1d98d30629
commit c3868062e6
72 changed files with 21172 additions and 1 deletions

View File

@@ -0,0 +1,147 @@
/**
* Step Navigation Component
* Professional Resume Builder - Enhanced with resume-example.com design patterns
*
* @author David Valera Melendez <david@valera-melendez.de>
* @created 2025-08-07
* @location Made in Germany 🇩🇪
*/
'use client';
import React from 'react';
import { ModernButton } from '@/components/ui/ModernButton';
interface StepNavigationProps {
onPrevious?: () => void;
onNext?: () => void;
onSave?: () => void;
isFirstStep?: boolean;
isLastStep?: boolean;
canProceed?: boolean;
isLoading?: boolean;
className?: string;
}
export const StepNavigation: React.FC<StepNavigationProps> = ({
onPrevious,
onNext,
onSave,
isFirstStep = false,
isLastStep = false,
canProceed = true,
isLoading = false,
className = '',
}) => {
return (
<div
className={`border-border-primary flex items-center justify-between border-t pt-6 ${className}`}
>
<div>
{!isFirstStep && onPrevious && (
<ModernButton
variant="outline"
size="lg"
onClick={onPrevious}
disabled={isLoading}
className="min-w-32"
>
<svg
className="mr-2 h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M15 19l-7-7 7-7"
/>
</svg>
Previous
</ModernButton>
)}
</div>
<div className="flex items-center gap-3">
{onSave && (
<ModernButton
variant="secondary"
size="lg"
onClick={onSave}
disabled={isLoading}
className="min-w-24"
>
<svg
className="mr-2 h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M8 7H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-3m-1 4l-3-3m0 0l-3 3m3-3v12"
/>
</svg>
Save
</ModernButton>
)}
{isLastStep
? onNext && (
<ModernButton
variant="primary"
size="lg"
onClick={onNext}
disabled={!canProceed || isLoading}
loading={isLoading}
className="min-w-32"
>
<svg
className="mr-2 h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M5 13l4 4L19 7"
/>
</svg>
Complete
</ModernButton>
)
: onNext && (
<ModernButton
variant="primary"
size="lg"
onClick={onNext}
disabled={!canProceed || isLoading}
loading={isLoading}
className="min-w-32"
>
Continue
<svg
className="ml-2 h-4 w-4"
fill="none"
stroke="currentColor"
viewBox="0 0 24 24"
>
<path
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth={2}
d="M9 5l7 7-7 7"
/>
</svg>
</ModernButton>
)}
</div>
</div>
);
};