auto-claude: subtask-2-6 - Create CompletionStep component - success message
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,165 @@
|
|||||||
|
import {
|
||||||
|
CheckCircle2,
|
||||||
|
Rocket,
|
||||||
|
FileText,
|
||||||
|
Settings,
|
||||||
|
BookOpen,
|
||||||
|
ArrowRight
|
||||||
|
} from 'lucide-react';
|
||||||
|
import { Button } from '../ui/button';
|
||||||
|
import { Card, CardContent } from '../ui/card';
|
||||||
|
|
||||||
|
interface CompletionStepProps {
|
||||||
|
onFinish: () => void;
|
||||||
|
onOpenTaskCreator?: () => void;
|
||||||
|
onOpenSettings?: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface NextStepCardProps {
|
||||||
|
icon: React.ReactNode;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
action?: () => void;
|
||||||
|
actionLabel?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function NextStepCard({ icon, title, description, action, actionLabel }: NextStepCardProps) {
|
||||||
|
return (
|
||||||
|
<Card className="border border-border bg-card/50 backdrop-blur-sm">
|
||||||
|
<CardContent className="p-4">
|
||||||
|
<div className="flex items-start gap-3">
|
||||||
|
<div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary">
|
||||||
|
{icon}
|
||||||
|
</div>
|
||||||
|
<div className="flex-1">
|
||||||
|
<h3 className="font-medium text-foreground">{title}</h3>
|
||||||
|
<p className="mt-1 text-sm text-muted-foreground">{description}</p>
|
||||||
|
{action && actionLabel && (
|
||||||
|
<Button
|
||||||
|
variant="link"
|
||||||
|
size="sm"
|
||||||
|
onClick={action}
|
||||||
|
className="mt-2 h-auto p-0 text-primary hover:text-primary/80"
|
||||||
|
>
|
||||||
|
{actionLabel}
|
||||||
|
<ArrowRight className="ml-1 h-3 w-3" />
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Completion step component for the onboarding wizard.
|
||||||
|
* Displays a success message with suggestions for next steps
|
||||||
|
* and a prominent "Finish" button to complete the wizard.
|
||||||
|
*/
|
||||||
|
export function CompletionStep({
|
||||||
|
onFinish,
|
||||||
|
onOpenTaskCreator,
|
||||||
|
onOpenSettings
|
||||||
|
}: CompletionStepProps) {
|
||||||
|
const nextSteps = [
|
||||||
|
{
|
||||||
|
icon: <FileText className="h-5 w-5" />,
|
||||||
|
title: 'Create a Task',
|
||||||
|
description: 'Start by creating your first task to see Auto Claude in action.',
|
||||||
|
action: onOpenTaskCreator,
|
||||||
|
actionLabel: 'Open Task Creator'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <Settings className="h-5 w-5" />,
|
||||||
|
title: 'Customize Settings',
|
||||||
|
description: 'Fine-tune your preferences, configure integrations, or re-run this wizard.',
|
||||||
|
action: onOpenSettings,
|
||||||
|
actionLabel: 'Open Settings'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
icon: <BookOpen className="h-5 w-5" />,
|
||||||
|
title: 'Explore Documentation',
|
||||||
|
description: 'Learn more about advanced features, best practices, and troubleshooting.'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="flex h-full flex-col items-center justify-center px-8 py-6">
|
||||||
|
<div className="w-full max-w-2xl">
|
||||||
|
{/* Success Hero */}
|
||||||
|
<div className="text-center mb-10">
|
||||||
|
<div className="flex justify-center mb-6">
|
||||||
|
<div className="relative">
|
||||||
|
<div className="flex h-20 w-20 items-center justify-center rounded-full bg-success/20 text-success">
|
||||||
|
<CheckCircle2 className="h-10 w-10" />
|
||||||
|
</div>
|
||||||
|
<div className="absolute -bottom-1 -right-1 flex h-8 w-8 items-center justify-center rounded-full bg-primary text-primary-foreground">
|
||||||
|
<Rocket className="h-4 w-4" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1 className="text-3xl font-bold text-foreground tracking-tight">
|
||||||
|
You're All Set!
|
||||||
|
</h1>
|
||||||
|
<p className="mt-3 text-muted-foreground text-lg">
|
||||||
|
Auto Claude is ready to help you build amazing software
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Completion message */}
|
||||||
|
<Card className="border border-success/30 bg-success/10 mb-8">
|
||||||
|
<CardContent className="p-5">
|
||||||
|
<div className="flex items-start gap-4">
|
||||||
|
<CheckCircle2 className="h-6 w-6 text-success flex-shrink-0 mt-0.5" />
|
||||||
|
<div className="flex-1">
|
||||||
|
<h3 className="text-lg font-medium text-success">
|
||||||
|
Setup Complete
|
||||||
|
</h3>
|
||||||
|
<p className="mt-1 text-sm text-success/80">
|
||||||
|
Your environment is configured and ready. You can start creating tasks
|
||||||
|
immediately or explore the application at your own pace.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardContent>
|
||||||
|
</Card>
|
||||||
|
|
||||||
|
{/* Next Steps Section */}
|
||||||
|
<div className="space-y-4 mb-10">
|
||||||
|
<div className="flex items-center gap-2 text-sm font-medium text-muted-foreground">
|
||||||
|
<Rocket className="h-4 w-4" />
|
||||||
|
What's Next?
|
||||||
|
</div>
|
||||||
|
<div className="grid grid-cols-1 gap-3">
|
||||||
|
{nextSteps.map((step, index) => (
|
||||||
|
<NextStepCard
|
||||||
|
key={index}
|
||||||
|
icon={step.icon}
|
||||||
|
title={step.title}
|
||||||
|
description={step.description}
|
||||||
|
action={step.action}
|
||||||
|
actionLabel={step.actionLabel}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Finish Button */}
|
||||||
|
<div className="flex flex-col items-center gap-4">
|
||||||
|
<Button
|
||||||
|
size="lg"
|
||||||
|
onClick={onFinish}
|
||||||
|
className="gap-2 px-10"
|
||||||
|
>
|
||||||
|
<Rocket className="h-5 w-5" />
|
||||||
|
Finish & Start Building
|
||||||
|
</Button>
|
||||||
|
<p className="text-sm text-muted-foreground text-center">
|
||||||
|
You can always re-run this wizard from Settings → Application
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user