Skip to content

Commit 5205dcd

Browse files
Merge pull request #45 from TopProjectsCreator/codex/add-advanced-ai-detection-tool-for-ftc
Platform-specific parts library + AI part detection, vendor/image support and CSV import
2 parents c09f1dd + 63fe8f6 commit 5205dcd

5 files changed

Lines changed: 280 additions & 38 deletions

File tree

src/components/arduino/ArduinoPanel.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,11 @@ export function ArduinoPanel({ files, onFileUpdate, onAddFile, currentTemplate }
9797
</Button>
9898
<Button
9999
variant="outline"
100-
onClick={() => window.dispatchEvent(new CustomEvent('open-parts-inventory'))}
100+
onClick={() =>
101+
window.dispatchEvent(
102+
new CustomEvent('open-parts-inventory', { detail: { platform: 'arduino' } }),
103+
)
104+
}
101105
>
102106
<Package className="w-4 h-4 mr-2" /> Parts
103107
</Button>

src/components/ftc/FTCPanel.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,11 @@ export function FTCPanel({ files, onFileUpdate }: FTCPanelProps) {
204204

205205
<Button
206206
variant="outline"
207-
onClick={() => window.dispatchEvent(new CustomEvent('open-parts-inventory'))}
207+
onClick={() =>
208+
window.dispatchEvent(
209+
new CustomEvent('open-parts-inventory', { detail: { platform: 'ftc' } }),
210+
)
211+
}
208212
>
209213
<Package className="w-4 h-4 mr-2" /> Parts
210214
</Button>

src/components/ide/IDELayout.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ export const IDELayout = ({ projectId, publishSlug }: IDELayoutProps) => {
272272
const [showGitImportDialog, setShowGitImportDialog] = useState(false);
273273
const [showCollabDialog, setShowCollabDialog] = useState(false);
274274
const [showPartsInventory, setShowPartsInventory] = useState(false);
275+
const [partsInventoryPlatform, setPartsInventoryPlatform] = useState<"ftc" | "arduino" | "general" | undefined>(undefined);
275276
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
276277
const [isStarred, setIsStarred] = useState(false);
277278
const [isForking, setIsForking] = useState(false);
@@ -1680,12 +1681,16 @@ export const IDELayout = ({ projectId, publishSlug }: IDELayoutProps) => {
16801681
window.addEventListener("keydown", handleKeyDown);
16811682

16821683
// Listen for parts inventory open event from ToolsPanel
1683-
const handleOpenParts = () => setShowPartsInventory(true);
1684-
window.addEventListener("open-parts-inventory", handleOpenParts);
1684+
const handleOpenParts = (event: Event) => {
1685+
const customEvent = event as CustomEvent<{ platform?: "ftc" | "arduino" | "general" }>;
1686+
setPartsInventoryPlatform(customEvent.detail?.platform);
1687+
setShowPartsInventory(true);
1688+
};
1689+
window.addEventListener("open-parts-inventory", handleOpenParts as EventListener);
16851690

16861691
return () => {
16871692
window.removeEventListener("keydown", handleKeyDown);
1688-
window.removeEventListener("open-parts-inventory", handleOpenParts);
1693+
window.removeEventListener("open-parts-inventory", handleOpenParts as EventListener);
16891694
};
16901695
}, [user, handleRun]);
16911696

@@ -1852,6 +1857,7 @@ export const IDELayout = ({ projectId, publishSlug }: IDELayoutProps) => {
18521857
open={showPartsInventory}
18531858
onOpenChange={setShowPartsInventory}
18541859
currentTemplate={selectedTemplate || undefined}
1860+
preferredPlatform={partsInventoryPlatform}
18551861
/>
18561862
</Suspense>
18571863

0 commit comments

Comments
 (0)