jscad-electronics 0.0.75 → 0.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -173,6 +173,14 @@ declare const QFP: ({ pinCount, pitch, leadWidth, padContactLength, bodyWidth, }
173
173
 
174
174
  declare const TQFP: () => react_jsx_runtime.JSX.Element;
175
175
 
176
+ declare const LQFP: ({ pinCount, pitch, leadWidth, padContactLength, bodyWidth, }: {
177
+ pinCount: number;
178
+ pitch?: number;
179
+ leadWidth?: number;
180
+ padContactLength?: number;
181
+ bodyWidth?: number;
182
+ }) => react_jsx_runtime.JSX.Element;
183
+
176
184
  declare const SOD123: ({ fullWidth, fullLength }: {
177
185
  fullWidth?: number | undefined;
178
186
  fullLength?: number | undefined;
@@ -204,4 +212,4 @@ declare const SOT223: () => react_jsx_runtime.JSX.Element;
204
212
 
205
213
  declare const SOT323: () => react_jsx_runtime.JSX.Element;
206
214
 
207
- export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, PinRow, QFN, QFP, SMA, SMB, SMC, SMF, SOD123, SOD123F, SOD123FL, SOD523, SOD923, SOT223, SOT233P, SOT323, SOT563, SOT723, SmdChipLead, type SmdChipLeadProps, TQFP, Tssop, VSSOP };
215
+ export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, LQFP, PinRow, QFN, QFP, SMA, SMB, SMC, SMF, SOD123, SOD123F, SOD123FL, SOD523, SOD923, SOT223, SOT233P, SOT323, SOT563, SOT723, SmdChipLead, type SmdChipLeadProps, TQFP, Tssop, VSSOP };
package/dist/index.js CHANGED
@@ -334,7 +334,6 @@ var A2512 = ({ color = "#333" }) => {
334
334
  // lib/BGA.tsx
335
335
  import { Cuboid as Cuboid10, Sphere, Translate as Translate2, Colorize } from "jscad-fiber";
336
336
  import { fp } from "@tscircuit/footprinter";
337
- import { useMemo } from "react";
338
337
  import { Fragment as Fragment10, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
339
338
  var BGA = ({
340
339
  packageWidth = 10,
@@ -351,11 +350,7 @@ var BGA = ({
351
350
  const bodyHeight = packageHeight - standoffHeight;
352
351
  const bodyOffset = standoffHeight + bodyHeight / 2;
353
352
  const ballOffset = -standoffHeight / 2;
354
- const ballsSoup = useMemo(() => {
355
- if (!footprintString) return null;
356
- const result = fp.string(footprintString);
357
- return result.circuitJson();
358
- }, [footprintString]);
353
+ const ballsSoup = footprintString ? fp.string(footprintString).circuitJson() : null;
359
354
  return /* @__PURE__ */ jsxs10(Fragment10, { children: [
360
355
  /* @__PURE__ */ jsx10(Translate2, { z: bodyOffset, children: /* @__PURE__ */ jsx10(Colorize, { color: "#555", children: /* @__PURE__ */ jsx10(Cuboid10, { size: [packageWidth, packageLength, bodyHeight] }) }) }),
361
356
  !footprintString && Array.from({ length: ballRows * ballColumns }).map((_, index) => {
@@ -2418,15 +2413,127 @@ var SOT323 = () => {
2418
2413
  ] });
2419
2414
  };
2420
2415
 
2416
+ // lib/lqfp.tsx
2417
+ import { Fragment as Fragment33, jsx as jsx37, jsxs as jsxs35 } from "react/jsx-runtime";
2418
+ var LQFP = ({
2419
+ pinCount,
2420
+ pitch,
2421
+ leadWidth,
2422
+ padContactLength,
2423
+ bodyWidth
2424
+ }) => {
2425
+ const sidePinCount = pinCount / 4;
2426
+ if (sidePinCount !== Math.floor(sidePinCount)) {
2427
+ throw new Error(`LQFP pinCount must be divisible by 4, got ${pinCount}`);
2428
+ }
2429
+ if (!pitch) pitch = 0.5;
2430
+ if (!padContactLength) padContactLength = 0.6;
2431
+ if (!leadWidth) leadWidth = 0.22;
2432
+ if (!bodyWidth) bodyWidth = pitch * (sidePinCount + 4);
2433
+ const bodyLength10 = bodyWidth;
2434
+ const pinOffsetToCenter = (sidePinCount - 1) * pitch / 2;
2435
+ const fullLength10 = bodyLength10 + 3.3 * padContactLength;
2436
+ const fullWidth = fullLength10;
2437
+ const leadHeight = 0.8;
2438
+ const leadThickness = 0.2;
2439
+ const bodyDistance = (fullWidth - bodyWidth) / 2 + 0.2;
2440
+ return /* @__PURE__ */ jsxs35(Fragment33, { children: [
2441
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx37(
2442
+ SmdChipLead,
2443
+ {
2444
+ position: {
2445
+ x: -fullWidth / 1.98,
2446
+ y: i * pitch - pinOffsetToCenter,
2447
+ z: leadThickness / 2
2448
+ },
2449
+ width: leadWidth,
2450
+ thickness: leadThickness,
2451
+ padContactLength,
2452
+ bodyDistance,
2453
+ height: leadHeight
2454
+ },
2455
+ `left-${i}`
2456
+ )),
2457
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx37(
2458
+ SmdChipLead,
2459
+ {
2460
+ rotation: Math.PI,
2461
+ position: {
2462
+ x: fullWidth / 1.98,
2463
+ y: i * pitch - pinOffsetToCenter,
2464
+ z: leadThickness / 2
2465
+ },
2466
+ width: leadWidth,
2467
+ thickness: leadThickness,
2468
+ padContactLength,
2469
+ bodyDistance,
2470
+ height: leadHeight
2471
+ },
2472
+ `right-${i}`
2473
+ )),
2474
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx37(
2475
+ SmdChipLead,
2476
+ {
2477
+ rotation: Math.PI / 2,
2478
+ position: {
2479
+ x: i * pitch - pinOffsetToCenter,
2480
+ y: -fullLength10 / 1.98,
2481
+ z: leadThickness / 2
2482
+ },
2483
+ width: leadWidth,
2484
+ thickness: leadThickness,
2485
+ padContactLength,
2486
+ bodyDistance,
2487
+ height: leadHeight
2488
+ },
2489
+ `bottom-${i}`
2490
+ )),
2491
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx37(
2492
+ SmdChipLead,
2493
+ {
2494
+ rotation: -Math.PI / 2,
2495
+ position: {
2496
+ x: i * pitch - pinOffsetToCenter,
2497
+ y: fullLength10 / 1.98,
2498
+ z: leadThickness / 2
2499
+ },
2500
+ width: leadWidth,
2501
+ thickness: leadThickness,
2502
+ padContactLength,
2503
+ bodyDistance,
2504
+ height: leadHeight
2505
+ },
2506
+ `top-${i}`
2507
+ )),
2508
+ /* @__PURE__ */ jsx37(
2509
+ ChipBody,
2510
+ {
2511
+ center: { x: 0, y: 0, z: leadThickness / 2 },
2512
+ width: bodyWidth,
2513
+ length: bodyLength10,
2514
+ height: 1.5,
2515
+ heightAboveSurface: 0.1,
2516
+ taperRatio: 0.04,
2517
+ chamferSize: 0.7,
2518
+ notchPosition: {
2519
+ x: bodyLength10 / 2 - 1.5,
2520
+ y: bodyLength10 / 2 - 1.5,
2521
+ z: 1.5
2522
+ }
2523
+ }
2524
+ )
2525
+ ] });
2526
+ };
2527
+
2421
2528
  // lib/Footprinter3d.tsx
2422
- import { jsx as jsx37 } from "react/jsx-runtime";
2529
+ import { jsx as jsx38 } from "react/jsx-runtime";
2423
2530
  var Footprinter3d = ({ footprint }) => {
2424
2531
  const fpJson = fp3.string(footprint).json();
2425
2532
  switch (fpJson.fn) {
2426
2533
  case "dip":
2427
- return /* @__PURE__ */ jsx37(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2534
+ return /* @__PURE__ */ jsx38(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2428
2535
  case "tssop":
2429
- return /* @__PURE__ */ jsx37(
2536
+ return /* @__PURE__ */ jsx38(
2430
2537
  Tssop,
2431
2538
  {
2432
2539
  pinCount: fpJson.num_pins,
@@ -2437,7 +2544,7 @@ var Footprinter3d = ({ footprint }) => {
2437
2544
  }
2438
2545
  );
2439
2546
  case "vssop":
2440
- return /* @__PURE__ */ jsx37(
2547
+ return /* @__PURE__ */ jsx38(
2441
2548
  VSSOP,
2442
2549
  {
2443
2550
  pinCount: fpJson.num_pins,
@@ -2449,7 +2556,7 @@ var Footprinter3d = ({ footprint }) => {
2449
2556
  }
2450
2557
  );
2451
2558
  case "qfp":
2452
- return /* @__PURE__ */ jsx37(
2559
+ return /* @__PURE__ */ jsx38(
2453
2560
  QFP,
2454
2561
  {
2455
2562
  pinCount: fpJson.num_pins,
@@ -2460,10 +2567,12 @@ var Footprinter3d = ({ footprint }) => {
2460
2567
  }
2461
2568
  );
2462
2569
  case "tqfp":
2463
- return /* @__PURE__ */ jsx37(tqfp_default, {});
2570
+ return /* @__PURE__ */ jsx38(tqfp_default, {});
2571
+ case "lqfp":
2572
+ return /* @__PURE__ */ jsx38(LQFP, { pinCount: fpJson.num_pins });
2464
2573
  case "qfn":
2465
2574
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
2466
- return /* @__PURE__ */ jsx37(
2575
+ return /* @__PURE__ */ jsx38(
2467
2576
  qfn_default,
2468
2577
  {
2469
2578
  num_pins: fpJson.num_pins,
@@ -2480,39 +2589,39 @@ var Footprinter3d = ({ footprint }) => {
2480
2589
  );
2481
2590
  case "pinrow":
2482
2591
  if (fpJson.male)
2483
- return /* @__PURE__ */ jsx37(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2592
+ return /* @__PURE__ */ jsx38(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2484
2593
  if (fpJson.female)
2485
- return /* @__PURE__ */ jsx37(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2594
+ return /* @__PURE__ */ jsx38(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2486
2595
  case "cap": {
2487
2596
  switch (fpJson.imperial) {
2488
2597
  case "0402":
2489
- return /* @__PURE__ */ jsx37(A0402, { color: "#856c4d" });
2598
+ return /* @__PURE__ */ jsx38(A0402, { color: "#856c4d" });
2490
2599
  case "0603":
2491
- return /* @__PURE__ */ jsx37(A0603, { color: "#856c4d" });
2600
+ return /* @__PURE__ */ jsx38(A0603, { color: "#856c4d" });
2492
2601
  case "0805":
2493
- return /* @__PURE__ */ jsx37(A0805, { color: "#856c4d" });
2602
+ return /* @__PURE__ */ jsx38(A0805, { color: "#856c4d" });
2494
2603
  case "0201":
2495
- return /* @__PURE__ */ jsx37(A0201, { color: "#856c4d" });
2604
+ return /* @__PURE__ */ jsx38(A0201, { color: "#856c4d" });
2496
2605
  case "01005":
2497
- return /* @__PURE__ */ jsx37(A01005, { color: "#856c4d" });
2606
+ return /* @__PURE__ */ jsx38(A01005, { color: "#856c4d" });
2498
2607
  case "1206":
2499
- return /* @__PURE__ */ jsx37(A1206, { color: "#856c4d" });
2608
+ return /* @__PURE__ */ jsx38(A1206, { color: "#856c4d" });
2500
2609
  case "1210":
2501
- return /* @__PURE__ */ jsx37(A1210, { color: "#856c4d" });
2610
+ return /* @__PURE__ */ jsx38(A1210, { color: "#856c4d" });
2502
2611
  case "2010":
2503
- return /* @__PURE__ */ jsx37(A2010, { color: "#856c4d" });
2612
+ return /* @__PURE__ */ jsx38(A2010, { color: "#856c4d" });
2504
2613
  case "2512":
2505
- return /* @__PURE__ */ jsx37(A2512, { color: "#856c4d" });
2614
+ return /* @__PURE__ */ jsx38(A2512, { color: "#856c4d" });
2506
2615
  }
2507
2616
  }
2508
2617
  case "sot235":
2509
- return /* @__PURE__ */ jsx37(SOT_235_default, {});
2618
+ return /* @__PURE__ */ jsx38(SOT_235_default, {});
2510
2619
  case "sot223":
2511
- return /* @__PURE__ */ jsx37(SOT223, {});
2620
+ return /* @__PURE__ */ jsx38(SOT223, {});
2512
2621
  case "sot323":
2513
- return /* @__PURE__ */ jsx37(SOT323, {});
2622
+ return /* @__PURE__ */ jsx38(SOT323, {});
2514
2623
  case "pushbutton":
2515
- return /* @__PURE__ */ jsx37(
2624
+ return /* @__PURE__ */ jsx38(
2516
2625
  PushButton,
2517
2626
  {
2518
2627
  width: fpJson.w,
@@ -2521,7 +2630,7 @@ var Footprinter3d = ({ footprint }) => {
2521
2630
  }
2522
2631
  );
2523
2632
  case "soic":
2524
- return /* @__PURE__ */ jsx37(
2633
+ return /* @__PURE__ */ jsx38(
2525
2634
  SOIC,
2526
2635
  {
2527
2636
  pinCount: fpJson.num_pins,
@@ -2532,49 +2641,49 @@ var Footprinter3d = ({ footprint }) => {
2532
2641
  }
2533
2642
  );
2534
2643
  case "sod523":
2535
- return /* @__PURE__ */ jsx37(SOD523, {});
2644
+ return /* @__PURE__ */ jsx38(SOD523, {});
2536
2645
  case "sma":
2537
- return /* @__PURE__ */ jsx37(SMA, {});
2646
+ return /* @__PURE__ */ jsx38(SMA, {});
2538
2647
  case "smb":
2539
- return /* @__PURE__ */ jsx37(SMB, {});
2648
+ return /* @__PURE__ */ jsx38(SMB, {});
2540
2649
  case "smc":
2541
- return /* @__PURE__ */ jsx37(SMC, {});
2650
+ return /* @__PURE__ */ jsx38(SMC, {});
2542
2651
  case "smf":
2543
- return /* @__PURE__ */ jsx37(SMF, {});
2652
+ return /* @__PURE__ */ jsx38(SMF, {});
2544
2653
  case "sod123f":
2545
- return /* @__PURE__ */ jsx37(SOD123F, {});
2654
+ return /* @__PURE__ */ jsx38(SOD123F, {});
2546
2655
  case "sod123fl":
2547
- return /* @__PURE__ */ jsx37(SOD123FL, {});
2656
+ return /* @__PURE__ */ jsx38(SOD123FL, {});
2548
2657
  case "sod923":
2549
- return /* @__PURE__ */ jsx37(SOD923, {});
2658
+ return /* @__PURE__ */ jsx38(SOD923, {});
2550
2659
  }
2551
2660
  const colorMatch = footprint.match(/_color\(([^)]+)\)/);
2552
2661
  const color = colorMatch ? colorMatch[1] : void 0;
2553
2662
  switch (fpJson.imperial) {
2554
2663
  case "0402":
2555
- return /* @__PURE__ */ jsx37(A0402, { color });
2664
+ return /* @__PURE__ */ jsx38(A0402, { color });
2556
2665
  case "0603":
2557
- return /* @__PURE__ */ jsx37(A0603, { color });
2666
+ return /* @__PURE__ */ jsx38(A0603, { color });
2558
2667
  case "0805":
2559
- return /* @__PURE__ */ jsx37(A0805, { color });
2668
+ return /* @__PURE__ */ jsx38(A0805, { color });
2560
2669
  case "0201":
2561
- return /* @__PURE__ */ jsx37(A0201, { color });
2670
+ return /* @__PURE__ */ jsx38(A0201, { color });
2562
2671
  case "01005":
2563
- return /* @__PURE__ */ jsx37(A01005, { color });
2672
+ return /* @__PURE__ */ jsx38(A01005, { color });
2564
2673
  case "1206":
2565
- return /* @__PURE__ */ jsx37(A1206, { color });
2674
+ return /* @__PURE__ */ jsx38(A1206, { color });
2566
2675
  case "1210":
2567
- return /* @__PURE__ */ jsx37(A1210, { color });
2676
+ return /* @__PURE__ */ jsx38(A1210, { color });
2568
2677
  case "2010":
2569
- return /* @__PURE__ */ jsx37(A2010, { color });
2678
+ return /* @__PURE__ */ jsx38(A2010, { color });
2570
2679
  case "2512":
2571
- return /* @__PURE__ */ jsx37(A2512, { color });
2680
+ return /* @__PURE__ */ jsx38(A2512, { color });
2572
2681
  }
2573
2682
  return null;
2574
2683
  };
2575
2684
 
2576
2685
  // lib/SOT-23-3P.tsx
2577
- import { Fragment as Fragment33, jsx as jsx38, jsxs as jsxs35 } from "react/jsx-runtime";
2686
+ import { Fragment as Fragment34, jsx as jsx39, jsxs as jsxs36 } from "react/jsx-runtime";
2578
2687
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2579
2688
  const bodyWidth = 1.3;
2580
2689
  const bodyLength10 = 2.9;
@@ -2585,8 +2694,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2585
2694
  const padContactLength = 0.4;
2586
2695
  const padThickness = leadThickness / 2;
2587
2696
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
2588
- return /* @__PURE__ */ jsxs35(Fragment33, { children: [
2589
- /* @__PURE__ */ jsx38(
2697
+ return /* @__PURE__ */ jsxs36(Fragment34, { children: [
2698
+ /* @__PURE__ */ jsx39(
2590
2699
  SmdChipLead,
2591
2700
  {
2592
2701
  rotation: Math.PI,
@@ -2603,7 +2712,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2603
2712
  },
2604
2713
  1
2605
2714
  ),
2606
- /* @__PURE__ */ jsx38(
2715
+ /* @__PURE__ */ jsx39(
2607
2716
  SmdChipLead,
2608
2717
  {
2609
2718
  rotation: Math.PI,
@@ -2620,7 +2729,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2620
2729
  },
2621
2730
  2
2622
2731
  ),
2623
- /* @__PURE__ */ jsx38(
2732
+ /* @__PURE__ */ jsx39(
2624
2733
  SmdChipLead,
2625
2734
  {
2626
2735
  position: {
@@ -2636,7 +2745,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2636
2745
  },
2637
2746
  3
2638
2747
  ),
2639
- /* @__PURE__ */ jsx38(
2748
+ /* @__PURE__ */ jsx39(
2640
2749
  ChipBody,
2641
2750
  {
2642
2751
  center: { x: 0, y: 0, z: 0 },
@@ -2650,7 +2759,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2650
2759
 
2651
2760
  // lib/SOT-563.tsx
2652
2761
  import { Cuboid as Cuboid26, Translate as Translate17, Rotate as Rotate6, Colorize as Colorize18 } from "jscad-fiber";
2653
- import { Fragment as Fragment34, jsx as jsx39, jsxs as jsxs36 } from "react/jsx-runtime";
2762
+ import { Fragment as Fragment35, jsx as jsx40, jsxs as jsxs37 } from "react/jsx-runtime";
2654
2763
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2655
2764
  const bodyWidth = 1.2;
2656
2765
  const bodyLength10 = 1.6;
@@ -2660,11 +2769,11 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2660
2769
  const leadHeight = 0.13;
2661
2770
  const leadSpacing = 0.5;
2662
2771
  const bodyZOffset = -0.4;
2663
- return /* @__PURE__ */ jsxs36(Fragment34, { children: [
2664
- /* @__PURE__ */ jsx39(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx39(Translate17, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx39(Colorize18, { color: "grey", children: /* @__PURE__ */ jsx39(Cuboid26, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2772
+ return /* @__PURE__ */ jsxs37(Fragment35, { children: [
2773
+ /* @__PURE__ */ jsx40(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx40(Translate17, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx40(Colorize18, { color: "grey", children: /* @__PURE__ */ jsx40(Cuboid26, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2665
2774
  [-1, 0, 1].flatMap((yOffset, index) => [
2666
2775
  // Left lead
2667
- /* @__PURE__ */ jsx39(
2776
+ /* @__PURE__ */ jsx40(
2668
2777
  Translate17,
2669
2778
  {
2670
2779
  center: [
@@ -2672,16 +2781,16 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2672
2781
  yOffset * leadSpacing,
2673
2782
  leadHeight / 2
2674
2783
  ],
2675
- children: /* @__PURE__ */ jsx39(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2784
+ children: /* @__PURE__ */ jsx40(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2676
2785
  },
2677
2786
  `left-${index}`
2678
2787
  ),
2679
2788
  // Right lead
2680
- /* @__PURE__ */ jsx39(
2789
+ /* @__PURE__ */ jsx40(
2681
2790
  Translate17,
2682
2791
  {
2683
2792
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
2684
- children: /* @__PURE__ */ jsx39(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2793
+ children: /* @__PURE__ */ jsx40(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2685
2794
  },
2686
2795
  `right-${index}`
2687
2796
  )
@@ -2691,7 +2800,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2691
2800
 
2692
2801
  // lib/SOT-723.tsx
2693
2802
  import { Cuboid as Cuboid27, Translate as Translate18, Rotate as Rotate7, Colorize as Colorize19 } from "jscad-fiber";
2694
- import { Fragment as Fragment35, jsx as jsx40, jsxs as jsxs37 } from "react/jsx-runtime";
2803
+ import { Fragment as Fragment36, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
2695
2804
  var getCcwSot723Coords = (pn) => {
2696
2805
  if (pn === 1) {
2697
2806
  return { x: 0, y: 0 };
@@ -2709,11 +2818,11 @@ var SOT723 = () => {
2709
2818
  const leadLength = 0.3;
2710
2819
  const leadHeight = 0.1;
2711
2820
  const centerLeadWidth = 0.42;
2712
- return /* @__PURE__ */ jsxs37(Fragment35, { children: [
2713
- /* @__PURE__ */ jsx40(Rotate7, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx40(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx40(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx40(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2821
+ return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2822
+ /* @__PURE__ */ jsx41(Rotate7, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx41(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx41(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx41(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2714
2823
  [1, 2, 3].map((pn) => {
2715
2824
  const { x, y } = getCcwSot723Coords(pn);
2716
- return /* @__PURE__ */ jsx40(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx40(
2825
+ return /* @__PURE__ */ jsx41(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx41(
2717
2826
  Cuboid27,
2718
2827
  {
2719
2828
  size: [
@@ -2728,7 +2837,7 @@ var SOT723 = () => {
2728
2837
  };
2729
2838
 
2730
2839
  // lib/sod-123.tsx
2731
- import { Fragment as Fragment36, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
2840
+ import { Fragment as Fragment37, jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
2732
2841
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2733
2842
  const bodyWidth = 2.9;
2734
2843
  const bodyLength10 = 1.3;
@@ -2739,8 +2848,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2739
2848
  const padContactLength = 0.4;
2740
2849
  const padThickness = leadThickness / 2;
2741
2850
  const bodyDistance = (fullWidth - bodyWidth) / 2;
2742
- return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2743
- /* @__PURE__ */ jsx41(
2851
+ return /* @__PURE__ */ jsxs39(Fragment37, { children: [
2852
+ /* @__PURE__ */ jsx42(
2744
2853
  SmdChipLead,
2745
2854
  {
2746
2855
  position: {
@@ -2756,7 +2865,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2756
2865
  },
2757
2866
  1
2758
2867
  ),
2759
- /* @__PURE__ */ jsx41(
2868
+ /* @__PURE__ */ jsx42(
2760
2869
  SmdChipLead,
2761
2870
  {
2762
2871
  rotation: Math.PI,
@@ -2773,7 +2882,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2773
2882
  },
2774
2883
  2
2775
2884
  ),
2776
- /* @__PURE__ */ jsx41(
2885
+ /* @__PURE__ */ jsx42(
2777
2886
  ChipBody,
2778
2887
  {
2779
2888
  center: { x: 0, y: 0, z: 0 },
@@ -2800,6 +2909,7 @@ export {
2800
2909
  FootprintPad,
2801
2910
  FootprintPlatedHole,
2802
2911
  Footprinter3d,
2912
+ LQFP,
2803
2913
  PinRow,
2804
2914
  QFN,
2805
2915
  QFP,