mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-02 20:43:36 +00:00
- Extract board-view into organized subfolders following new pattern: - components/: kanban-card, kanban-column - dialogs/: all dialog and modal components (8 files) - hooks/: all board-specific hooks (10 files) - shared/: reusable components between dialogs (model-selector, etc.) - Rename all files to kebab-case convention - Add barrel exports (index.ts) for clean imports - Add docs/folder-pattern.md documenting the folder structure - Reduce board-view.tsx from ~3600 lines to ~490 lines 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
"use client";
|
|
|
|
import {
|
|
Dialog,
|
|
DialogContent,
|
|
DialogDescription,
|
|
DialogFooter,
|
|
DialogHeader,
|
|
DialogTitle,
|
|
} from "@/components/ui/dialog";
|
|
import { Button } from "@/components/ui/button";
|
|
import { Trash2 } from "lucide-react";
|
|
import { Feature } from "@/store/app-store";
|
|
|
|
interface DeleteCompletedFeatureDialogProps {
|
|
feature: Feature | null;
|
|
onClose: () => void;
|
|
onConfirm: () => void;
|
|
}
|
|
|
|
export function DeleteCompletedFeatureDialog({
|
|
feature,
|
|
onClose,
|
|
onConfirm,
|
|
}: DeleteCompletedFeatureDialogProps) {
|
|
if (!feature) return null;
|
|
|
|
return (
|
|
<Dialog open={!!feature} onOpenChange={(open) => !open && onClose()}>
|
|
<DialogContent data-testid="delete-completed-confirmation-dialog">
|
|
<DialogHeader>
|
|
<DialogTitle className="flex items-center gap-2 text-destructive">
|
|
<Trash2 className="w-5 h-5" />
|
|
Delete Feature
|
|
</DialogTitle>
|
|
<DialogDescription>
|
|
Are you sure you want to permanently delete this feature?
|
|
<span className="block mt-2 font-medium text-foreground">
|
|
"{feature.description?.slice(0, 100)}
|
|
{(feature.description?.length ?? 0) > 100 ? "..." : ""}"
|
|
</span>
|
|
<span className="block mt-2 text-destructive font-medium">
|
|
This action cannot be undone.
|
|
</span>
|
|
</DialogDescription>
|
|
</DialogHeader>
|
|
<DialogFooter>
|
|
<Button
|
|
variant="ghost"
|
|
onClick={onClose}
|
|
data-testid="cancel-delete-completed-button"
|
|
>
|
|
Cancel
|
|
</Button>
|
|
<Button
|
|
variant="destructive"
|
|
onClick={onConfirm}
|
|
data-testid="confirm-delete-completed-button"
|
|
>
|
|
<Trash2 className="w-4 h-4 mr-2" />
|
|
Delete
|
|
</Button>
|
|
</DialogFooter>
|
|
</DialogContent>
|
|
</Dialog>
|
|
);
|
|
}
|