From e694f164608f3e526938acdd4f33326b49db2bb6 Mon Sep 17 00:00:00 2001 From: Rushabh Patil Date: Mon, 27 Jul 2026 00:10:08 +0530 Subject: [PATCH 1/2] add LED5050 3D model --- bun.lock | 6 +- examples/led5050.example.tsx | 9 ++ lib/Footprinter3d.tsx | 9 +- lib/LED5050.tsx | 93 ++++++++++++++++++ lib/index.ts | 1 + package.json | 2 +- .../snapshots/__snapshots__/led5050.snap.png | Bin 0 -> 60061 bytes tests/snapshots/led5050.test.ts | 8 ++ 8 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 examples/led5050.example.tsx create mode 100644 lib/LED5050.tsx create mode 100644 tests/snapshots/__snapshots__/led5050.snap.png create mode 100644 tests/snapshots/led5050.test.ts diff --git a/bun.lock b/bun.lock index d9b9e29..dd313bf 100644 --- a/bun.lock +++ b/bun.lock @@ -6,7 +6,7 @@ "name": "jscad-electronics", "devDependencies": { "@biomejs/biome": "^1.9.3", - "@tscircuit/footprinter": "^0.0.393", + "@tscircuit/footprinter": "^0.0.395", "@types/react": "19", "@types/react-dom": "19", "@types/three": "^0.179.0", @@ -24,7 +24,7 @@ "peerDependencies": { "@jscad/modeling": "^2.12.5", "@tscircuit/alphabet": "^0.0.24", - "@tscircuit/footprinter": "*", + "@tscircuit/footprinter": "^0.0.393", "circuit-json": "^0.0.426", "jscad-fiber": "^0.0.85", "react": "19.1.0", @@ -179,7 +179,7 @@ "@tscircuit/alphabet": ["@tscircuit/alphabet@0.0.24", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-vYYLwDwpTULFDwuqB5+U4RlTiHJ3Ez4Sf5OEv7rB1oVbhmh8p3Xl7h3vsi5eD4SE+x+0e8eSXKSlwSLCN94vZA=="], - "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.393", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-F2XKRQqSMltg5/fCjGXsW87sYbThcZjVK2o/gFeWExA9iyR/kMre5ZV/zLSl5fIb8DEBpvJSjz9Bnso3cFuUyQ=="], + "@tscircuit/footprinter": ["@tscircuit/footprinter@0.0.395", "", { "dependencies": { "@tscircuit/mm": "^0.0.8", "zod": "^3.23.8" }, "peerDependencies": { "circuit-json": "*" } }, "sha512-wjZWH9vaa0blMISX2H/fIpmgmvQRT7F4qG6vQukdTWLgrMH9PvKzTzfbicNQr7ZqXojATapSRNLgQaPBCGlKkA=="], "@tscircuit/mm": ["@tscircuit/mm@0.0.8", "", { "peerDependencies": { "typescript": "^5.0.0" } }, "sha512-nl7nxE7AhARbKuobflI0LUzoir7+wJyvwfPw6bzA/O0Q3YTcH3vBkU/Of+V/fp6ht+AofiCXj7YAH9E446138Q=="], diff --git a/examples/led5050.example.tsx b/examples/led5050.example.tsx new file mode 100644 index 0000000..1d3a0c3 --- /dev/null +++ b/examples/led5050.example.tsx @@ -0,0 +1,9 @@ +import { JsCadView } from "jscad-fiber" +import { ExtrudedPads, Led5050 } from "../lib" + +export default () => ( + + + + +) diff --git a/lib/Footprinter3d.tsx b/lib/Footprinter3d.tsx index 3caada4..b3a6c08 100644 --- a/lib/Footprinter3d.tsx +++ b/lib/Footprinter3d.tsx @@ -59,6 +59,7 @@ import SOD723 from "./SOD723" import { JSTZH1_5mm } from "./JSTZH1_5mm" import { FPC } from "./FPC" import { SmdPinHeader } from "./SmdPinHeader" +import { Led5050 } from "./LED5050" /** * Outputs a 3d model for any [footprinter string](https://github.com/tscircuit/footprinter) @@ -118,6 +119,9 @@ export const Footprinter3d = ({ footprint }: { footprint: string }) => { mpl?: number } + const colorMatch = footprint.match(/_color\(([^)]+)\)/) + const color = colorMatch ? colorMatch[1] : undefined + switch (fpJson.fn) { case "dip": return ( @@ -252,6 +256,8 @@ export const Footprinter3d = ({ footprint }: { footprint: string }) => { bodyWidth={fpJson.bh} /> ) + case "led5050": + return case "cap": { switch (fpJson.imperial) { @@ -448,9 +454,6 @@ export const Footprinter3d = ({ footprint }: { footprint: string }) => { } } - const colorMatch = footprint.match(/_color\(([^)]+)\)/) - const color = colorMatch ? colorMatch[1] : undefined - switch (fpJson.imperial) { case "0402": return diff --git a/lib/LED5050.tsx b/lib/LED5050.tsx new file mode 100644 index 0000000..f238658 --- /dev/null +++ b/lib/LED5050.tsx @@ -0,0 +1,93 @@ +import { + Colorize, + Cuboid, + Cylinder, + Rotate, + Subtract, + Translate, +} from "jscad-fiber" +import { ChipBody } from "./ChipBody" + +export interface Led5050Props { + color?: string + bodyColor?: string + leadColor?: string +} + +export const Led5050 = ({ + color = "#ffff00", + bodyColor = "#ffffff", + leadColor = "#dedede", +}: Led5050Props) => { + const bodySize = 5 + const leadSpan = 5.4 + const bodyBottom = 0.2 + const bodyHeight = 1.3 + const bodyTop = bodyBottom + bodyHeight + const leadLength = 1.4 + const leadWidth = 1 + const leadThickness = 0.2 + const leadCenterX = leadSpan / 2 - leadLength / 2 + const lensRadius = 2 + const lensHeight = 0.25 + const lensTop = 1.55 + const cornerCutDepth = 0.3 + const leadYPositions = [-1.7, 0, 1.7] + const leadSides = [-1, 1] + + return ( + <> + {leadYPositions.flatMap((y) => + leadSides.map((side) => ( + + )), + )} + + + + + + + + + + + + + + + + ) +} + +export default Led5050 diff --git a/lib/index.ts b/lib/index.ts index f575588..05f0303 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -72,3 +72,4 @@ export * from "./MountedPcbModule" export * from "./Screen" export * from "./JSTZH1_5mm" export * from "./FPC" +export * from "./LED5050" diff --git a/package.json b/package.json index 4b1a8e6..e0d6d46 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "@biomejs/biome": "^1.9.3", - "@tscircuit/footprinter": "^0.0.393", + "@tscircuit/footprinter": "^0.0.395", "@types/react": "19", "@types/react-dom": "19", "@types/three": "^0.179.0", diff --git a/tests/snapshots/__snapshots__/led5050.snap.png b/tests/snapshots/__snapshots__/led5050.snap.png new file mode 100644 index 0000000000000000000000000000000000000000..9e85bfd134634aaef6f0264fcde4fb293bf96f5a GIT binary patch literal 60061 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 Jx!%+F{|9*iBW?fy literal 0 HcmV?d00001 diff --git a/tests/snapshots/led5050.test.ts b/tests/snapshots/led5050.test.ts new file mode 100644 index 0000000..1f95d3f --- /dev/null +++ b/tests/snapshots/led5050.test.ts @@ -0,0 +1,8 @@ +import { expect, test } from "bun:test" +import "../fixtures/png-matcher" +import { renderFootprint } from "../helpers/render-footprint" + +test("led5050", async () => { + const pngBuffer = await renderFootprint("led5050") + await expect(pngBuffer).toMatchPngSnapshot(import.meta.path) +}) From 84c2807cf4c01d41397c24014751283117c6eab8 Mon Sep 17 00:00:00 2001 From: Rushabh Patil Date: Mon, 27 Jul 2026 00:22:27 +0530 Subject: [PATCH 2/2] rename Led5050 component file --- lib/Footprinter3d.tsx | 2 +- lib/{LED5050.tsx => Led5050.tsx} | 0 lib/index.ts | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename lib/{LED5050.tsx => Led5050.tsx} (100%) diff --git a/lib/Footprinter3d.tsx b/lib/Footprinter3d.tsx index b3a6c08..6a82497 100644 --- a/lib/Footprinter3d.tsx +++ b/lib/Footprinter3d.tsx @@ -59,7 +59,7 @@ import SOD723 from "./SOD723" import { JSTZH1_5mm } from "./JSTZH1_5mm" import { FPC } from "./FPC" import { SmdPinHeader } from "./SmdPinHeader" -import { Led5050 } from "./LED5050" +import { Led5050 } from "./Led5050" /** * Outputs a 3d model for any [footprinter string](https://github.com/tscircuit/footprinter) diff --git a/lib/LED5050.tsx b/lib/Led5050.tsx similarity index 100% rename from lib/LED5050.tsx rename to lib/Led5050.tsx diff --git a/lib/index.ts b/lib/index.ts index 05f0303..3e0d244 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -72,4 +72,4 @@ export * from "./MountedPcbModule" export * from "./Screen" export * from "./JSTZH1_5mm" export * from "./FPC" -export * from "./LED5050" +export * from "./Led5050"