jscad-electronics 0.0.78 → 0.0.80

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
@@ -163,6 +163,21 @@ declare const QFN: ({ num_pins, bodyWidth, bodyLength, bodyThickness, thermalPad
163
163
  thermalPadThickness?: number;
164
164
  }) => react_jsx_runtime.JSX.Element;
165
165
 
166
+ declare const DFN: ({ num_pins, bodyWidth, bodyLength, bodyThickness, thermalPadSize, padWidth, padLength, pitch, thermalPadThickness, }: {
167
+ num_pins: number;
168
+ bodyWidth?: number;
169
+ bodyLength?: number;
170
+ bodyThickness?: number;
171
+ thermalPadSize?: {
172
+ width: number;
173
+ length: number;
174
+ };
175
+ padWidth?: number;
176
+ padLength?: number;
177
+ pitch?: number;
178
+ thermalPadThickness?: number;
179
+ }) => react_jsx_runtime.JSX.Element;
180
+
166
181
  declare const QFP: ({ pinCount, pitch, leadWidth, padContactLength, bodyWidth, }: {
167
182
  pinCount: number;
168
183
  pitch?: number;
@@ -212,4 +227,26 @@ declare const SOT223: () => react_jsx_runtime.JSX.Element;
212
227
 
213
228
  declare const SOT323: () => react_jsx_runtime.JSX.Element;
214
229
 
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 };
230
+ interface HC49Props {
231
+ /** overall body length (mm) */
232
+ bodyLength?: number;
233
+ /** body width (mm) */
234
+ bodyWidth?: number;
235
+ /** body height (mm) */
236
+ bodyHeight?: number;
237
+ /** distance between lead centers (mm) */
238
+ leadSpacing?: number;
239
+ /** lead diameter (mm) */
240
+ leadDiameter?: number;
241
+ /** length of the lead below the body (mm) */
242
+ leadLength?: number;
243
+ color?: string;
244
+ leadColor?: string;
245
+ }
246
+ /**
247
+ * HC-49 (through-hole crystal) simplified 3D model.
248
+ * Defaults chosen to match the HC-49/U-S recommended land pattern and dimensions.
249
+ */
250
+ declare const HC49: ({ bodyLength, bodyWidth, bodyHeight, leadSpacing, leadDiameter, leadLength, color, leadColor, }: HC49Props) => react_jsx_runtime.JSX.Element;
251
+
252
+ export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, DFN, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, HC49, type HC49Props, 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
@@ -2525,15 +2525,167 @@ var LQFP = ({
2525
2525
  ] });
2526
2526
  };
2527
2527
 
2528
+ // lib/dfn.tsx
2529
+ import { Cuboid as Cuboid26 } from "jscad-fiber";
2530
+ import { Fragment as Fragment34, jsx as jsx38, jsxs as jsxs36 } from "react/jsx-runtime";
2531
+ var DFN = ({
2532
+ num_pins,
2533
+ bodyWidth = 5.3,
2534
+ bodyLength: bodyLength10 = 5.3,
2535
+ bodyThickness = 1,
2536
+ thermalPadSize,
2537
+ // For a body length of 5 the typical pad width/length are 0.6 and 1.
2538
+ // Scale those values proportionally when `bodyLength` changes.
2539
+ padWidth = bodyLength10 / 5.3 * 0.6,
2540
+ padLength = bodyLength10 / 5.3 * 1,
2541
+ pitch = 0.5,
2542
+ thermalPadThickness = 0.2
2543
+ }) => {
2544
+ const pinPositions = [];
2545
+ const pinsPerSide = Math.floor(num_pins / 2);
2546
+ const pinSpan = pitch * (pinsPerSide - 1);
2547
+ for (let i = 0; i < num_pins; i++) {
2548
+ const side = i < pinsPerSide ? "left" : "right";
2549
+ const indexOnSide = i % pinsPerSide;
2550
+ const y = pinSpan / 2 - indexOnSide * pitch;
2551
+ const padSizeX = padLength;
2552
+ const padSizeY = padWidth;
2553
+ const x = side === "left" ? -bodyWidth / 2 + padSizeX / 2 : bodyWidth / 2 - padSizeX / 2;
2554
+ const pinNumber = i + 1;
2555
+ pinPositions.push({ pinNumber, x, y, padSizeX, padSizeY });
2556
+ }
2557
+ return /* @__PURE__ */ jsxs36(Fragment34, { children: [
2558
+ /* @__PURE__ */ jsx38(
2559
+ ChipBody,
2560
+ {
2561
+ center: { x: 0, y: 0, z: 0 },
2562
+ width: bodyWidth,
2563
+ length: bodyLength10,
2564
+ height: bodyThickness,
2565
+ heightAboveSurface: 0,
2566
+ color: "grey",
2567
+ chamferSize: 0.2,
2568
+ taperRatio: 0,
2569
+ notchPosition: {
2570
+ x: bodyWidth / 2 - padLength,
2571
+ y: bodyLength10 / 2 - padLength,
2572
+ z: bodyThickness
2573
+ }
2574
+ }
2575
+ ),
2576
+ pinPositions.map((p, i) => /* @__PURE__ */ jsx38(
2577
+ Cuboid26,
2578
+ {
2579
+ center: [p.x, p.y, thermalPadThickness / 2],
2580
+ size: [p.padSizeX, p.padSizeY, thermalPadThickness]
2581
+ },
2582
+ i
2583
+ )),
2584
+ thermalPadSize?.length !== void 0 && thermalPadSize?.width !== void 0 && /* @__PURE__ */ jsx38(
2585
+ Cuboid26,
2586
+ {
2587
+ center: [0, 0, thermalPadThickness / 2],
2588
+ size: [
2589
+ thermalPadSize.width,
2590
+ thermalPadSize.length,
2591
+ thermalPadThickness
2592
+ ]
2593
+ }
2594
+ )
2595
+ ] });
2596
+ };
2597
+
2598
+ // lib/hc49.tsx
2599
+ import { Colorize as Colorize18, Cylinder as Cylinder6, Hull as Hull12, RoundedCylinder } from "jscad-fiber";
2600
+ import { Fragment as Fragment35, jsx as jsx39, jsxs as jsxs37 } from "react/jsx-runtime";
2601
+ var HC49 = ({
2602
+ bodyLength: bodyLength10 = 10.2,
2603
+ bodyWidth = 4.65,
2604
+ bodyHeight = 13.46,
2605
+ leadSpacing = 5,
2606
+ leadDiameter = 0.8,
2607
+ leadLength = 12.7,
2608
+ color = "#ddd",
2609
+ leadColor = "#b87333"
2610
+ }) => {
2611
+ const halfLength = bodyLength10 / 2;
2612
+ const endRadius = bodyWidth / 2;
2613
+ const endCenterX = halfLength - endRadius;
2614
+ const leadCenterX = leadSpacing / 2;
2615
+ const baseHeight = 0.85;
2616
+ return /* @__PURE__ */ jsxs37(Fragment35, { children: [
2617
+ /* @__PURE__ */ jsxs37(Colorize18, { color, children: [
2618
+ /* @__PURE__ */ jsxs37(Hull12, { children: [
2619
+ /* @__PURE__ */ jsx39(
2620
+ RoundedCylinder,
2621
+ {
2622
+ height: bodyHeight,
2623
+ roundRadius: 0.5,
2624
+ radius: endRadius,
2625
+ center: [-endCenterX, 0, bodyHeight]
2626
+ }
2627
+ ),
2628
+ /* @__PURE__ */ jsx39(
2629
+ RoundedCylinder,
2630
+ {
2631
+ height: bodyHeight,
2632
+ roundRadius: 0.5,
2633
+ radius: endRadius,
2634
+ center: [endCenterX, 0, bodyHeight]
2635
+ }
2636
+ )
2637
+ ] }),
2638
+ /* @__PURE__ */ jsxs37(Hull12, { children: [
2639
+ /* @__PURE__ */ jsx39(
2640
+ RoundedCylinder,
2641
+ {
2642
+ height: baseHeight,
2643
+ roundRadius: 0.1,
2644
+ radius: endRadius + 0.85,
2645
+ center: [-endCenterX, 0, bodyHeight / 2 + baseHeight / 2]
2646
+ }
2647
+ ),
2648
+ /* @__PURE__ */ jsx39(
2649
+ RoundedCylinder,
2650
+ {
2651
+ height: baseHeight,
2652
+ roundRadius: 0.1,
2653
+ radius: endRadius + 0.85,
2654
+ center: [endCenterX, 0, bodyHeight / 2 + baseHeight / 2]
2655
+ }
2656
+ )
2657
+ ] })
2658
+ ] }),
2659
+ /* @__PURE__ */ jsxs37(Colorize18, { color: leadColor, children: [
2660
+ /* @__PURE__ */ jsx39(
2661
+ Cylinder6,
2662
+ {
2663
+ height: leadLength + bodyHeight / 2,
2664
+ radius: leadDiameter / 2,
2665
+ center: [-leadCenterX + 0.06, 0, -(leadLength / 2) + bodyHeight / 2]
2666
+ }
2667
+ ),
2668
+ /* @__PURE__ */ jsx39(
2669
+ Cylinder6,
2670
+ {
2671
+ height: leadLength + bodyHeight / 2,
2672
+ radius: leadDiameter / 2,
2673
+ center: [leadCenterX - 0.06, 0, -(leadLength / 2) + bodyHeight / 2]
2674
+ }
2675
+ )
2676
+ ] })
2677
+ ] });
2678
+ };
2679
+
2528
2680
  // lib/Footprinter3d.tsx
2529
- import { jsx as jsx38 } from "react/jsx-runtime";
2681
+ import { jsx as jsx40 } from "react/jsx-runtime";
2530
2682
  var Footprinter3d = ({ footprint }) => {
2531
2683
  const fpJson = fp3.string(footprint).json();
2532
2684
  switch (fpJson.fn) {
2533
2685
  case "dip":
2534
- return /* @__PURE__ */ jsx38(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2686
+ return /* @__PURE__ */ jsx40(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2535
2687
  case "tssop":
2536
- return /* @__PURE__ */ jsx38(
2688
+ return /* @__PURE__ */ jsx40(
2537
2689
  Tssop,
2538
2690
  {
2539
2691
  pinCount: fpJson.num_pins,
@@ -2544,7 +2696,7 @@ var Footprinter3d = ({ footprint }) => {
2544
2696
  }
2545
2697
  );
2546
2698
  case "vssop":
2547
- return /* @__PURE__ */ jsx38(
2699
+ return /* @__PURE__ */ jsx40(
2548
2700
  VSSOP,
2549
2701
  {
2550
2702
  pinCount: fpJson.num_pins,
@@ -2556,7 +2708,7 @@ var Footprinter3d = ({ footprint }) => {
2556
2708
  }
2557
2709
  );
2558
2710
  case "qfp":
2559
- return /* @__PURE__ */ jsx38(
2711
+ return /* @__PURE__ */ jsx40(
2560
2712
  QFP,
2561
2713
  {
2562
2714
  pinCount: fpJson.num_pins,
@@ -2567,12 +2719,12 @@ var Footprinter3d = ({ footprint }) => {
2567
2719
  }
2568
2720
  );
2569
2721
  case "tqfp":
2570
- return /* @__PURE__ */ jsx38(tqfp_default, {});
2722
+ return /* @__PURE__ */ jsx40(tqfp_default, {});
2571
2723
  case "lqfp":
2572
- return /* @__PURE__ */ jsx38(LQFP, { pinCount: fpJson.num_pins });
2573
- case "qfn":
2724
+ return /* @__PURE__ */ jsx40(LQFP, { pinCount: fpJson.num_pins });
2725
+ case "qfn": {
2574
2726
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
2575
- return /* @__PURE__ */ jsx38(
2727
+ return /* @__PURE__ */ jsx40(
2576
2728
  qfn_default,
2577
2729
  {
2578
2730
  num_pins: fpJson.num_pins,
@@ -2587,41 +2739,60 @@ var Footprinter3d = ({ footprint }) => {
2587
2739
  } : void 0
2588
2740
  }
2589
2741
  );
2742
+ }
2743
+ case "dfn": {
2744
+ const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
2745
+ return /* @__PURE__ */ jsx40(
2746
+ DFN,
2747
+ {
2748
+ num_pins: fpJson.num_pins,
2749
+ bodyWidth: fpJson.w,
2750
+ bodyLength: fpJson.h,
2751
+ pitch: fpJson.p,
2752
+ padLength: fpJson.pl,
2753
+ padWidth: fpJson.pw,
2754
+ thermalPadSize: hasThermalPad ? {
2755
+ width: fpJson.thermalpad.x,
2756
+ length: fpJson.thermalpad.y
2757
+ } : void 0
2758
+ }
2759
+ );
2760
+ }
2590
2761
  case "pinrow":
2591
2762
  if (fpJson.male)
2592
- return /* @__PURE__ */ jsx38(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2763
+ return /* @__PURE__ */ jsx40(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2593
2764
  if (fpJson.female)
2594
- return /* @__PURE__ */ jsx38(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2765
+ return /* @__PURE__ */ jsx40(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2595
2766
  case "cap": {
2596
2767
  switch (fpJson.imperial) {
2597
2768
  case "0402":
2598
- return /* @__PURE__ */ jsx38(A0402, { color: "#856c4d" });
2769
+ return /* @__PURE__ */ jsx40(A0402, { color: "#856c4d" });
2599
2770
  case "0603":
2600
- return /* @__PURE__ */ jsx38(A0603, { color: "#856c4d" });
2771
+ return /* @__PURE__ */ jsx40(A0603, { color: "#856c4d" });
2601
2772
  case "0805":
2602
- return /* @__PURE__ */ jsx38(A0805, { color: "#856c4d" });
2773
+ return /* @__PURE__ */ jsx40(A0805, { color: "#856c4d" });
2603
2774
  case "0201":
2604
- return /* @__PURE__ */ jsx38(A0201, { color: "#856c4d" });
2775
+ return /* @__PURE__ */ jsx40(A0201, { color: "#856c4d" });
2605
2776
  case "01005":
2606
- return /* @__PURE__ */ jsx38(A01005, { color: "#856c4d" });
2777
+ return /* @__PURE__ */ jsx40(A01005, { color: "#856c4d" });
2607
2778
  case "1206":
2608
- return /* @__PURE__ */ jsx38(A1206, { color: "#856c4d" });
2779
+ return /* @__PURE__ */ jsx40(A1206, { color: "#856c4d" });
2609
2780
  case "1210":
2610
- return /* @__PURE__ */ jsx38(A1210, { color: "#856c4d" });
2781
+ return /* @__PURE__ */ jsx40(A1210, { color: "#856c4d" });
2611
2782
  case "2010":
2612
- return /* @__PURE__ */ jsx38(A2010, { color: "#856c4d" });
2783
+ return /* @__PURE__ */ jsx40(A2010, { color: "#856c4d" });
2613
2784
  case "2512":
2614
- return /* @__PURE__ */ jsx38(A2512, { color: "#856c4d" });
2785
+ return /* @__PURE__ */ jsx40(A2512, { color: "#856c4d" });
2615
2786
  }
2616
2787
  }
2617
2788
  case "sot235":
2618
- return /* @__PURE__ */ jsx38(SOT_235_default, {});
2789
+ return /* @__PURE__ */ jsx40(SOT_235_default, {});
2619
2790
  case "sot223":
2620
- return /* @__PURE__ */ jsx38(SOT223, {});
2791
+ return /* @__PURE__ */ jsx40(SOT223, {});
2621
2792
  case "sot323":
2622
- return /* @__PURE__ */ jsx38(SOT323, {});
2793
+ return /* @__PURE__ */ jsx40(SOT323, {});
2623
2794
  case "pushbutton":
2624
- return /* @__PURE__ */ jsx38(
2795
+ return /* @__PURE__ */ jsx40(
2625
2796
  PushButton,
2626
2797
  {
2627
2798
  width: fpJson.w,
@@ -2630,7 +2801,7 @@ var Footprinter3d = ({ footprint }) => {
2630
2801
  }
2631
2802
  );
2632
2803
  case "soic":
2633
- return /* @__PURE__ */ jsx38(
2804
+ return /* @__PURE__ */ jsx40(
2634
2805
  SOIC,
2635
2806
  {
2636
2807
  pinCount: fpJson.num_pins,
@@ -2641,49 +2812,51 @@ var Footprinter3d = ({ footprint }) => {
2641
2812
  }
2642
2813
  );
2643
2814
  case "sod523":
2644
- return /* @__PURE__ */ jsx38(SOD523, {});
2815
+ return /* @__PURE__ */ jsx40(SOD523, {});
2645
2816
  case "sma":
2646
- return /* @__PURE__ */ jsx38(SMA, {});
2817
+ return /* @__PURE__ */ jsx40(SMA, {});
2647
2818
  case "smb":
2648
- return /* @__PURE__ */ jsx38(SMB, {});
2819
+ return /* @__PURE__ */ jsx40(SMB, {});
2649
2820
  case "smc":
2650
- return /* @__PURE__ */ jsx38(SMC, {});
2821
+ return /* @__PURE__ */ jsx40(SMC, {});
2651
2822
  case "smf":
2652
- return /* @__PURE__ */ jsx38(SMF, {});
2823
+ return /* @__PURE__ */ jsx40(SMF, {});
2653
2824
  case "sod123f":
2654
- return /* @__PURE__ */ jsx38(SOD123F, {});
2825
+ return /* @__PURE__ */ jsx40(SOD123F, {});
2655
2826
  case "sod123fl":
2656
- return /* @__PURE__ */ jsx38(SOD123FL, {});
2827
+ return /* @__PURE__ */ jsx40(SOD123FL, {});
2657
2828
  case "sod923":
2658
- return /* @__PURE__ */ jsx38(SOD923, {});
2829
+ return /* @__PURE__ */ jsx40(SOD923, {});
2830
+ case "hc49":
2831
+ return /* @__PURE__ */ jsx40(HC49, {});
2659
2832
  }
2660
2833
  const colorMatch = footprint.match(/_color\(([^)]+)\)/);
2661
2834
  const color = colorMatch ? colorMatch[1] : void 0;
2662
2835
  switch (fpJson.imperial) {
2663
2836
  case "0402":
2664
- return /* @__PURE__ */ jsx38(A0402, { color });
2837
+ return /* @__PURE__ */ jsx40(A0402, { color });
2665
2838
  case "0603":
2666
- return /* @__PURE__ */ jsx38(A0603, { color });
2839
+ return /* @__PURE__ */ jsx40(A0603, { color });
2667
2840
  case "0805":
2668
- return /* @__PURE__ */ jsx38(A0805, { color });
2841
+ return /* @__PURE__ */ jsx40(A0805, { color });
2669
2842
  case "0201":
2670
- return /* @__PURE__ */ jsx38(A0201, { color });
2843
+ return /* @__PURE__ */ jsx40(A0201, { color });
2671
2844
  case "01005":
2672
- return /* @__PURE__ */ jsx38(A01005, { color });
2845
+ return /* @__PURE__ */ jsx40(A01005, { color });
2673
2846
  case "1206":
2674
- return /* @__PURE__ */ jsx38(A1206, { color });
2847
+ return /* @__PURE__ */ jsx40(A1206, { color });
2675
2848
  case "1210":
2676
- return /* @__PURE__ */ jsx38(A1210, { color });
2849
+ return /* @__PURE__ */ jsx40(A1210, { color });
2677
2850
  case "2010":
2678
- return /* @__PURE__ */ jsx38(A2010, { color });
2851
+ return /* @__PURE__ */ jsx40(A2010, { color });
2679
2852
  case "2512":
2680
- return /* @__PURE__ */ jsx38(A2512, { color });
2853
+ return /* @__PURE__ */ jsx40(A2512, { color });
2681
2854
  }
2682
2855
  return null;
2683
2856
  };
2684
2857
 
2685
2858
  // lib/SOT-23-3P.tsx
2686
- import { Fragment as Fragment34, jsx as jsx39, jsxs as jsxs36 } from "react/jsx-runtime";
2859
+ import { Fragment as Fragment36, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
2687
2860
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2688
2861
  const bodyWidth = 1.3;
2689
2862
  const bodyLength10 = 2.9;
@@ -2694,8 +2867,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2694
2867
  const padContactLength = 0.4;
2695
2868
  const padThickness = leadThickness / 2;
2696
2869
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
2697
- return /* @__PURE__ */ jsxs36(Fragment34, { children: [
2698
- /* @__PURE__ */ jsx39(
2870
+ return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2871
+ /* @__PURE__ */ jsx41(
2699
2872
  SmdChipLead,
2700
2873
  {
2701
2874
  rotation: Math.PI,
@@ -2712,7 +2885,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2712
2885
  },
2713
2886
  1
2714
2887
  ),
2715
- /* @__PURE__ */ jsx39(
2888
+ /* @__PURE__ */ jsx41(
2716
2889
  SmdChipLead,
2717
2890
  {
2718
2891
  rotation: Math.PI,
@@ -2729,7 +2902,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2729
2902
  },
2730
2903
  2
2731
2904
  ),
2732
- /* @__PURE__ */ jsx39(
2905
+ /* @__PURE__ */ jsx41(
2733
2906
  SmdChipLead,
2734
2907
  {
2735
2908
  position: {
@@ -2745,7 +2918,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2745
2918
  },
2746
2919
  3
2747
2920
  ),
2748
- /* @__PURE__ */ jsx39(
2921
+ /* @__PURE__ */ jsx41(
2749
2922
  ChipBody,
2750
2923
  {
2751
2924
  center: { x: 0, y: 0, z: 0 },
@@ -2758,8 +2931,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2758
2931
  };
2759
2932
 
2760
2933
  // lib/SOT-563.tsx
2761
- import { Cuboid as Cuboid26, Translate as Translate17, Rotate as Rotate6, Colorize as Colorize18 } from "jscad-fiber";
2762
- import { Fragment as Fragment35, jsx as jsx40, jsxs as jsxs37 } from "react/jsx-runtime";
2934
+ import { Cuboid as Cuboid27, Translate as Translate17, Rotate as Rotate6, Colorize as Colorize19 } from "jscad-fiber";
2935
+ import { Fragment as Fragment37, jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
2763
2936
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2764
2937
  const bodyWidth = 1.2;
2765
2938
  const bodyLength10 = 1.6;
@@ -2769,11 +2942,11 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2769
2942
  const leadHeight = 0.13;
2770
2943
  const leadSpacing = 0.5;
2771
2944
  const bodyZOffset = -0.4;
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] }) }) }) }),
2945
+ return /* @__PURE__ */ jsxs39(Fragment37, { children: [
2946
+ /* @__PURE__ */ jsx42(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx42(Translate17, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx42(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx42(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2774
2947
  [-1, 0, 1].flatMap((yOffset, index) => [
2775
2948
  // Left lead
2776
- /* @__PURE__ */ jsx40(
2949
+ /* @__PURE__ */ jsx42(
2777
2950
  Translate17,
2778
2951
  {
2779
2952
  center: [
@@ -2781,16 +2954,16 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2781
2954
  yOffset * leadSpacing,
2782
2955
  leadHeight / 2
2783
2956
  ],
2784
- children: /* @__PURE__ */ jsx40(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2957
+ children: /* @__PURE__ */ jsx42(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
2785
2958
  },
2786
2959
  `left-${index}`
2787
2960
  ),
2788
2961
  // Right lead
2789
- /* @__PURE__ */ jsx40(
2962
+ /* @__PURE__ */ jsx42(
2790
2963
  Translate17,
2791
2964
  {
2792
2965
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
2793
- children: /* @__PURE__ */ jsx40(Cuboid26, { size: [leadLength, leadWidth, leadHeight] })
2966
+ children: /* @__PURE__ */ jsx42(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
2794
2967
  },
2795
2968
  `right-${index}`
2796
2969
  )
@@ -2799,8 +2972,8 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2799
2972
  };
2800
2973
 
2801
2974
  // lib/SOT-723.tsx
2802
- import { Cuboid as Cuboid27, Translate as Translate18, Rotate as Rotate7, Colorize as Colorize19 } from "jscad-fiber";
2803
- import { Fragment as Fragment36, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
2975
+ import { Cuboid as Cuboid28, Translate as Translate18, Rotate as Rotate7, Colorize as Colorize20 } from "jscad-fiber";
2976
+ import { Fragment as Fragment38, jsx as jsx43, jsxs as jsxs40 } from "react/jsx-runtime";
2804
2977
  var getCcwSot723Coords = (pn) => {
2805
2978
  if (pn === 1) {
2806
2979
  return { x: 0, y: 0 };
@@ -2818,12 +2991,12 @@ var SOT723 = () => {
2818
2991
  const leadLength = 0.3;
2819
2992
  const leadHeight = 0.1;
2820
2993
  const centerLeadWidth = 0.42;
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] }) }) }) }),
2994
+ return /* @__PURE__ */ jsxs40(Fragment38, { children: [
2995
+ /* @__PURE__ */ jsx43(Rotate7, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx43(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx43(Colorize20, { color: "grey", children: /* @__PURE__ */ jsx43(Cuboid28, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2823
2996
  [1, 2, 3].map((pn) => {
2824
2997
  const { x, y } = getCcwSot723Coords(pn);
2825
- return /* @__PURE__ */ jsx41(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx41(
2826
- Cuboid27,
2998
+ return /* @__PURE__ */ jsx43(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx43(
2999
+ Cuboid28,
2827
3000
  {
2828
3001
  size: [
2829
3002
  leadLength,
@@ -2837,7 +3010,7 @@ var SOT723 = () => {
2837
3010
  };
2838
3011
 
2839
3012
  // lib/sod-123.tsx
2840
- import { Fragment as Fragment37, jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
3013
+ import { Fragment as Fragment39, jsx as jsx44, jsxs as jsxs41 } from "react/jsx-runtime";
2841
3014
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2842
3015
  const bodyWidth = 2.9;
2843
3016
  const bodyLength10 = 1.3;
@@ -2848,8 +3021,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2848
3021
  const padContactLength = 0.4;
2849
3022
  const padThickness = leadThickness / 2;
2850
3023
  const bodyDistance = (fullWidth - bodyWidth) / 2;
2851
- return /* @__PURE__ */ jsxs39(Fragment37, { children: [
2852
- /* @__PURE__ */ jsx42(
3024
+ return /* @__PURE__ */ jsxs41(Fragment39, { children: [
3025
+ /* @__PURE__ */ jsx44(
2853
3026
  SmdChipLead,
2854
3027
  {
2855
3028
  position: {
@@ -2865,7 +3038,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2865
3038
  },
2866
3039
  1
2867
3040
  ),
2868
- /* @__PURE__ */ jsx42(
3041
+ /* @__PURE__ */ jsx44(
2869
3042
  SmdChipLead,
2870
3043
  {
2871
3044
  rotation: Math.PI,
@@ -2882,7 +3055,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2882
3055
  },
2883
3056
  2
2884
3057
  ),
2885
- /* @__PURE__ */ jsx42(
3058
+ /* @__PURE__ */ jsx44(
2886
3059
  ChipBody,
2887
3060
  {
2888
3061
  center: { x: 0, y: 0, z: 0 },
@@ -2905,10 +3078,12 @@ export {
2905
3078
  A2512,
2906
3079
  BGA,
2907
3080
  ChipBody,
3081
+ DFN,
2908
3082
  ExtrudedPads,
2909
3083
  FootprintPad,
2910
3084
  FootprintPlatedHole,
2911
3085
  Footprinter3d,
3086
+ HC49,
2912
3087
  LQFP,
2913
3088
  PinRow,
2914
3089
  QFN,