- {/* Job identity - confirm this is the right role */}
+ {googleDorks.length > 0 ? (
+
+ {googleDorks.length}{" "}
+ {googleDorks.length === 1 ? "search link" : "search links"}
+ >
+ }
+ value="search-dorks"
+ >
+
+
+ ) : null}
+
{/* Project selection - expandable accordion */}
-
-
-
-
-
-
-
-
-
- {selectedProjectIds.length}{" "}
- {selectedProjectIds.length === 1 ? "project" : "projects"}{" "}
- selected
-
-
-
-
-
-
- {selectedProjectIds.map((id) => {
- const name = catalog.find((p) => p.id === id)?.name;
- if (!name) return null;
- return - {name}
;
- })}
- {selectedProjectIds.length === 0 && (
- - No projects selected
- )}
-
-
-
-
+
+ {selectedProjectIds.length}{" "}
+ {selectedProjectIds.length === 1 ? "project" : "projects"}{" "}
+ selected
+ >
+ }
+ value="projects"
+ >
+
+ {selectedProjectIds.map((id) => {
+ const name = catalog.find((p) => p.id === id)?.name;
+ if (!name) return null;
+ return - {name}
;
+ })}
+ {selectedProjectIds.length === 0 && (
+ - No projects selected
+ )}
+
+
diff --git a/orchestrator/src/client/components/ReadySummaryAccordion.tsx b/orchestrator/src/client/components/ReadySummaryAccordion.tsx
new file mode 100644
index 0000000..812ac92
--- /dev/null
+++ b/orchestrator/src/client/components/ReadySummaryAccordion.tsx
@@ -0,0 +1,46 @@
+import type { LucideIcon } from "lucide-react";
+import type React from "react";
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+} from "@/components/ui/accordion";
+
+interface ReadySummaryAccordionProps {
+ children: React.ReactNode;
+ icon: LucideIcon;
+ summary: React.ReactNode;
+ value: string;
+}
+
+export const ReadySummaryAccordion: React.FC