jscad-electronics 0.0.79 → 0.0.81

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
@@ -227,4 +227,33 @@ declare const SOT223: () => react_jsx_runtime.JSX.Element;
227
227
 
228
228
  declare const SOT323: () => react_jsx_runtime.JSX.Element;
229
229
 
230
- export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, DFN, 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
+ declare const MS012: ({ pinCount, padContactLength, leadWidth, pitch, }: {
253
+ pinCount: number;
254
+ pitch?: number;
255
+ leadWidth?: number;
256
+ padContactLength?: number;
257
+ }) => react_jsx_runtime.JSX.Element;
258
+
259
+ export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, DFN, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, HC49, type HC49Props, LQFP, MS012, 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
@@ -2595,15 +2595,162 @@ var DFN = ({
2595
2595
  ] });
2596
2596
  };
2597
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
+
2680
+ // lib/ms012.tsx
2681
+ import { Fragment as Fragment36, jsx as jsx40, jsxs as jsxs38 } from "react/jsx-runtime";
2682
+ var MS012 = ({
2683
+ pinCount,
2684
+ padContactLength = 0.6,
2685
+ leadWidth = 0.41,
2686
+ pitch = 1.27
2687
+ }) => {
2688
+ if (pinCount % 2 !== 0) {
2689
+ throw new Error("MS012 pinCount must be even");
2690
+ }
2691
+ const sidePinCount = pinCount / 2;
2692
+ const bodyWidth = 4.9;
2693
+ const bodyLength10 = 3.9;
2694
+ const pinOffsetToCenter = (sidePinCount - 1) * pitch / 2;
2695
+ const leadThickness = 0.2;
2696
+ return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2697
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx40(
2698
+ SmdChipLead,
2699
+ {
2700
+ position: {
2701
+ x: -bodyLength10 / 2 - padContactLength - 0.3,
2702
+ y: i * pitch - pinOffsetToCenter,
2703
+ z: leadThickness / 2
2704
+ },
2705
+ width: leadWidth,
2706
+ thickness: leadThickness,
2707
+ padContactLength,
2708
+ bodyDistance: padContactLength + 0.4,
2709
+ height: 0.85
2710
+ },
2711
+ i
2712
+ )),
2713
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ jsx40(
2714
+ SmdChipLead,
2715
+ {
2716
+ rotation: Math.PI,
2717
+ position: {
2718
+ x: bodyLength10 / 2 + padContactLength + 0.3,
2719
+ y: i * pitch - pinOffsetToCenter,
2720
+ z: leadThickness / 2
2721
+ },
2722
+ width: leadWidth,
2723
+ thickness: leadThickness,
2724
+ padContactLength,
2725
+ bodyDistance: padContactLength + 0.4,
2726
+ height: 0.85
2727
+ },
2728
+ `right-${i}`
2729
+ )),
2730
+ /* @__PURE__ */ jsx40(
2731
+ ChipBody,
2732
+ {
2733
+ center: { x: 0, y: 0, z: leadThickness / 2 },
2734
+ width: bodyLength10,
2735
+ length: bodyWidth,
2736
+ height: 1.55,
2737
+ notchPosition: { x: bodyLength10 / 2 - 1, y: bodyWidth / 2 - 1, z: 1.55 },
2738
+ heightAboveSurface: 0.17,
2739
+ taperRatio: 0.09
2740
+ }
2741
+ )
2742
+ ] });
2743
+ };
2744
+
2598
2745
  // lib/Footprinter3d.tsx
2599
- import { jsx as jsx39 } from "react/jsx-runtime";
2746
+ import { jsx as jsx41 } from "react/jsx-runtime";
2600
2747
  var Footprinter3d = ({ footprint }) => {
2601
2748
  const fpJson = fp3.string(footprint).json();
2602
2749
  switch (fpJson.fn) {
2603
2750
  case "dip":
2604
- return /* @__PURE__ */ jsx39(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2751
+ return /* @__PURE__ */ jsx41(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
2605
2752
  case "tssop":
2606
- return /* @__PURE__ */ jsx39(
2753
+ return /* @__PURE__ */ jsx41(
2607
2754
  Tssop,
2608
2755
  {
2609
2756
  pinCount: fpJson.num_pins,
@@ -2614,7 +2761,7 @@ var Footprinter3d = ({ footprint }) => {
2614
2761
  }
2615
2762
  );
2616
2763
  case "vssop":
2617
- return /* @__PURE__ */ jsx39(
2764
+ return /* @__PURE__ */ jsx41(
2618
2765
  VSSOP,
2619
2766
  {
2620
2767
  pinCount: fpJson.num_pins,
@@ -2626,7 +2773,7 @@ var Footprinter3d = ({ footprint }) => {
2626
2773
  }
2627
2774
  );
2628
2775
  case "qfp":
2629
- return /* @__PURE__ */ jsx39(
2776
+ return /* @__PURE__ */ jsx41(
2630
2777
  QFP,
2631
2778
  {
2632
2779
  pinCount: fpJson.num_pins,
@@ -2637,12 +2784,12 @@ var Footprinter3d = ({ footprint }) => {
2637
2784
  }
2638
2785
  );
2639
2786
  case "tqfp":
2640
- return /* @__PURE__ */ jsx39(tqfp_default, {});
2787
+ return /* @__PURE__ */ jsx41(tqfp_default, {});
2641
2788
  case "lqfp":
2642
- return /* @__PURE__ */ jsx39(LQFP, { pinCount: fpJson.num_pins });
2789
+ return /* @__PURE__ */ jsx41(LQFP, { pinCount: fpJson.num_pins });
2643
2790
  case "qfn": {
2644
2791
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
2645
- return /* @__PURE__ */ jsx39(
2792
+ return /* @__PURE__ */ jsx41(
2646
2793
  qfn_default,
2647
2794
  {
2648
2795
  num_pins: fpJson.num_pins,
@@ -2660,7 +2807,7 @@ var Footprinter3d = ({ footprint }) => {
2660
2807
  }
2661
2808
  case "dfn": {
2662
2809
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
2663
- return /* @__PURE__ */ jsx39(
2810
+ return /* @__PURE__ */ jsx41(
2664
2811
  DFN,
2665
2812
  {
2666
2813
  num_pins: fpJson.num_pins,
@@ -2678,39 +2825,39 @@ var Footprinter3d = ({ footprint }) => {
2678
2825
  }
2679
2826
  case "pinrow":
2680
2827
  if (fpJson.male)
2681
- return /* @__PURE__ */ jsx39(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2828
+ return /* @__PURE__ */ jsx41(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2682
2829
  if (fpJson.female)
2683
- return /* @__PURE__ */ jsx39(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2830
+ return /* @__PURE__ */ jsx41(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
2684
2831
  case "cap": {
2685
2832
  switch (fpJson.imperial) {
2686
2833
  case "0402":
2687
- return /* @__PURE__ */ jsx39(A0402, { color: "#856c4d" });
2834
+ return /* @__PURE__ */ jsx41(A0402, { color: "#856c4d" });
2688
2835
  case "0603":
2689
- return /* @__PURE__ */ jsx39(A0603, { color: "#856c4d" });
2836
+ return /* @__PURE__ */ jsx41(A0603, { color: "#856c4d" });
2690
2837
  case "0805":
2691
- return /* @__PURE__ */ jsx39(A0805, { color: "#856c4d" });
2838
+ return /* @__PURE__ */ jsx41(A0805, { color: "#856c4d" });
2692
2839
  case "0201":
2693
- return /* @__PURE__ */ jsx39(A0201, { color: "#856c4d" });
2840
+ return /* @__PURE__ */ jsx41(A0201, { color: "#856c4d" });
2694
2841
  case "01005":
2695
- return /* @__PURE__ */ jsx39(A01005, { color: "#856c4d" });
2842
+ return /* @__PURE__ */ jsx41(A01005, { color: "#856c4d" });
2696
2843
  case "1206":
2697
- return /* @__PURE__ */ jsx39(A1206, { color: "#856c4d" });
2844
+ return /* @__PURE__ */ jsx41(A1206, { color: "#856c4d" });
2698
2845
  case "1210":
2699
- return /* @__PURE__ */ jsx39(A1210, { color: "#856c4d" });
2846
+ return /* @__PURE__ */ jsx41(A1210, { color: "#856c4d" });
2700
2847
  case "2010":
2701
- return /* @__PURE__ */ jsx39(A2010, { color: "#856c4d" });
2848
+ return /* @__PURE__ */ jsx41(A2010, { color: "#856c4d" });
2702
2849
  case "2512":
2703
- return /* @__PURE__ */ jsx39(A2512, { color: "#856c4d" });
2850
+ return /* @__PURE__ */ jsx41(A2512, { color: "#856c4d" });
2704
2851
  }
2705
2852
  }
2706
2853
  case "sot235":
2707
- return /* @__PURE__ */ jsx39(SOT_235_default, {});
2854
+ return /* @__PURE__ */ jsx41(SOT_235_default, {});
2708
2855
  case "sot223":
2709
- return /* @__PURE__ */ jsx39(SOT223, {});
2856
+ return /* @__PURE__ */ jsx41(SOT223, {});
2710
2857
  case "sot323":
2711
- return /* @__PURE__ */ jsx39(SOT323, {});
2858
+ return /* @__PURE__ */ jsx41(SOT323, {});
2712
2859
  case "pushbutton":
2713
- return /* @__PURE__ */ jsx39(
2860
+ return /* @__PURE__ */ jsx41(
2714
2861
  PushButton,
2715
2862
  {
2716
2863
  width: fpJson.w,
@@ -2719,7 +2866,7 @@ var Footprinter3d = ({ footprint }) => {
2719
2866
  }
2720
2867
  );
2721
2868
  case "soic":
2722
- return /* @__PURE__ */ jsx39(
2869
+ return /* @__PURE__ */ jsx41(
2723
2870
  SOIC,
2724
2871
  {
2725
2872
  pinCount: fpJson.num_pins,
@@ -2730,49 +2877,61 @@ var Footprinter3d = ({ footprint }) => {
2730
2877
  }
2731
2878
  );
2732
2879
  case "sod523":
2733
- return /* @__PURE__ */ jsx39(SOD523, {});
2880
+ return /* @__PURE__ */ jsx41(SOD523, {});
2734
2881
  case "sma":
2735
- return /* @__PURE__ */ jsx39(SMA, {});
2882
+ return /* @__PURE__ */ jsx41(SMA, {});
2736
2883
  case "smb":
2737
- return /* @__PURE__ */ jsx39(SMB, {});
2884
+ return /* @__PURE__ */ jsx41(SMB, {});
2738
2885
  case "smc":
2739
- return /* @__PURE__ */ jsx39(SMC, {});
2886
+ return /* @__PURE__ */ jsx41(SMC, {});
2740
2887
  case "smf":
2741
- return /* @__PURE__ */ jsx39(SMF, {});
2888
+ return /* @__PURE__ */ jsx41(SMF, {});
2742
2889
  case "sod123f":
2743
- return /* @__PURE__ */ jsx39(SOD123F, {});
2890
+ return /* @__PURE__ */ jsx41(SOD123F, {});
2744
2891
  case "sod123fl":
2745
- return /* @__PURE__ */ jsx39(SOD123FL, {});
2892
+ return /* @__PURE__ */ jsx41(SOD123FL, {});
2746
2893
  case "sod923":
2747
- return /* @__PURE__ */ jsx39(SOD923, {});
2894
+ return /* @__PURE__ */ jsx41(SOD923, {});
2895
+ case "hc49":
2896
+ return /* @__PURE__ */ jsx41(HC49, {});
2897
+ case "ms012":
2898
+ return /* @__PURE__ */ jsx41(
2899
+ MS012,
2900
+ {
2901
+ pinCount: fpJson.num_pins,
2902
+ padContactLength: fpJson.pl,
2903
+ leadWidth: fpJson.pw,
2904
+ pitch: fpJson.p
2905
+ }
2906
+ );
2748
2907
  }
2749
2908
  const colorMatch = footprint.match(/_color\(([^)]+)\)/);
2750
2909
  const color = colorMatch ? colorMatch[1] : void 0;
2751
2910
  switch (fpJson.imperial) {
2752
2911
  case "0402":
2753
- return /* @__PURE__ */ jsx39(A0402, { color });
2912
+ return /* @__PURE__ */ jsx41(A0402, { color });
2754
2913
  case "0603":
2755
- return /* @__PURE__ */ jsx39(A0603, { color });
2914
+ return /* @__PURE__ */ jsx41(A0603, { color });
2756
2915
  case "0805":
2757
- return /* @__PURE__ */ jsx39(A0805, { color });
2916
+ return /* @__PURE__ */ jsx41(A0805, { color });
2758
2917
  case "0201":
2759
- return /* @__PURE__ */ jsx39(A0201, { color });
2918
+ return /* @__PURE__ */ jsx41(A0201, { color });
2760
2919
  case "01005":
2761
- return /* @__PURE__ */ jsx39(A01005, { color });
2920
+ return /* @__PURE__ */ jsx41(A01005, { color });
2762
2921
  case "1206":
2763
- return /* @__PURE__ */ jsx39(A1206, { color });
2922
+ return /* @__PURE__ */ jsx41(A1206, { color });
2764
2923
  case "1210":
2765
- return /* @__PURE__ */ jsx39(A1210, { color });
2924
+ return /* @__PURE__ */ jsx41(A1210, { color });
2766
2925
  case "2010":
2767
- return /* @__PURE__ */ jsx39(A2010, { color });
2926
+ return /* @__PURE__ */ jsx41(A2010, { color });
2768
2927
  case "2512":
2769
- return /* @__PURE__ */ jsx39(A2512, { color });
2928
+ return /* @__PURE__ */ jsx41(A2512, { color });
2770
2929
  }
2771
2930
  return null;
2772
2931
  };
2773
2932
 
2774
2933
  // lib/SOT-23-3P.tsx
2775
- import { Fragment as Fragment35, jsx as jsx40, jsxs as jsxs37 } from "react/jsx-runtime";
2934
+ import { Fragment as Fragment37, jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
2776
2935
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2777
2936
  const bodyWidth = 1.3;
2778
2937
  const bodyLength10 = 2.9;
@@ -2783,8 +2942,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2783
2942
  const padContactLength = 0.4;
2784
2943
  const padThickness = leadThickness / 2;
2785
2944
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
2786
- return /* @__PURE__ */ jsxs37(Fragment35, { children: [
2787
- /* @__PURE__ */ jsx40(
2945
+ return /* @__PURE__ */ jsxs39(Fragment37, { children: [
2946
+ /* @__PURE__ */ jsx42(
2788
2947
  SmdChipLead,
2789
2948
  {
2790
2949
  rotation: Math.PI,
@@ -2801,7 +2960,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2801
2960
  },
2802
2961
  1
2803
2962
  ),
2804
- /* @__PURE__ */ jsx40(
2963
+ /* @__PURE__ */ jsx42(
2805
2964
  SmdChipLead,
2806
2965
  {
2807
2966
  rotation: Math.PI,
@@ -2818,7 +2977,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2818
2977
  },
2819
2978
  2
2820
2979
  ),
2821
- /* @__PURE__ */ jsx40(
2980
+ /* @__PURE__ */ jsx42(
2822
2981
  SmdChipLead,
2823
2982
  {
2824
2983
  position: {
@@ -2834,7 +2993,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2834
2993
  },
2835
2994
  3
2836
2995
  ),
2837
- /* @__PURE__ */ jsx40(
2996
+ /* @__PURE__ */ jsx42(
2838
2997
  ChipBody,
2839
2998
  {
2840
2999
  center: { x: 0, y: 0, z: 0 },
@@ -2847,8 +3006,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
2847
3006
  };
2848
3007
 
2849
3008
  // lib/SOT-563.tsx
2850
- import { Cuboid as Cuboid27, Translate as Translate17, Rotate as Rotate6, Colorize as Colorize18 } from "jscad-fiber";
2851
- import { Fragment as Fragment36, jsx as jsx41, jsxs as jsxs38 } from "react/jsx-runtime";
3009
+ import { Cuboid as Cuboid27, Translate as Translate17, Rotate as Rotate6, Colorize as Colorize19 } from "jscad-fiber";
3010
+ import { Fragment as Fragment38, jsx as jsx43, jsxs as jsxs40 } from "react/jsx-runtime";
2852
3011
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2853
3012
  const bodyWidth = 1.2;
2854
3013
  const bodyLength10 = 1.6;
@@ -2858,11 +3017,11 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2858
3017
  const leadHeight = 0.13;
2859
3018
  const leadSpacing = 0.5;
2860
3019
  const bodyZOffset = -0.4;
2861
- return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2862
- /* @__PURE__ */ jsx41(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx41(Translate17, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx41(Colorize18, { color: "grey", children: /* @__PURE__ */ jsx41(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
3020
+ return /* @__PURE__ */ jsxs40(Fragment38, { children: [
3021
+ /* @__PURE__ */ jsx43(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx43(Translate17, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx43(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx43(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2863
3022
  [-1, 0, 1].flatMap((yOffset, index) => [
2864
3023
  // Left lead
2865
- /* @__PURE__ */ jsx41(
3024
+ /* @__PURE__ */ jsx43(
2866
3025
  Translate17,
2867
3026
  {
2868
3027
  center: [
@@ -2870,16 +3029,16 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2870
3029
  yOffset * leadSpacing,
2871
3030
  leadHeight / 2
2872
3031
  ],
2873
- children: /* @__PURE__ */ jsx41(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
3032
+ children: /* @__PURE__ */ jsx43(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
2874
3033
  },
2875
3034
  `left-${index}`
2876
3035
  ),
2877
3036
  // Right lead
2878
- /* @__PURE__ */ jsx41(
3037
+ /* @__PURE__ */ jsx43(
2879
3038
  Translate17,
2880
3039
  {
2881
3040
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
2882
- children: /* @__PURE__ */ jsx41(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
3041
+ children: /* @__PURE__ */ jsx43(Cuboid27, { size: [leadLength, leadWidth, leadHeight] })
2883
3042
  },
2884
3043
  `right-${index}`
2885
3044
  )
@@ -2888,8 +3047,8 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
2888
3047
  };
2889
3048
 
2890
3049
  // lib/SOT-723.tsx
2891
- import { Cuboid as Cuboid28, Translate as Translate18, Rotate as Rotate7, Colorize as Colorize19 } from "jscad-fiber";
2892
- import { Fragment as Fragment37, jsx as jsx42, jsxs as jsxs39 } from "react/jsx-runtime";
3050
+ import { Cuboid as Cuboid28, Translate as Translate18, Rotate as Rotate7, Colorize as Colorize20 } from "jscad-fiber";
3051
+ import { Fragment as Fragment39, jsx as jsx44, jsxs as jsxs41 } from "react/jsx-runtime";
2893
3052
  var getCcwSot723Coords = (pn) => {
2894
3053
  if (pn === 1) {
2895
3054
  return { x: 0, y: 0 };
@@ -2907,11 +3066,11 @@ var SOT723 = () => {
2907
3066
  const leadLength = 0.3;
2908
3067
  const leadHeight = 0.1;
2909
3068
  const centerLeadWidth = 0.42;
2910
- return /* @__PURE__ */ jsxs39(Fragment37, { children: [
2911
- /* @__PURE__ */ jsx42(Rotate7, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx42(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx42(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx42(Cuboid28, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
3069
+ return /* @__PURE__ */ jsxs41(Fragment39, { children: [
3070
+ /* @__PURE__ */ jsx44(Rotate7, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx44(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx44(Colorize20, { color: "grey", children: /* @__PURE__ */ jsx44(Cuboid28, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2912
3071
  [1, 2, 3].map((pn) => {
2913
3072
  const { x, y } = getCcwSot723Coords(pn);
2914
- return /* @__PURE__ */ jsx42(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx42(
3073
+ return /* @__PURE__ */ jsx44(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx44(
2915
3074
  Cuboid28,
2916
3075
  {
2917
3076
  size: [
@@ -2926,7 +3085,7 @@ var SOT723 = () => {
2926
3085
  };
2927
3086
 
2928
3087
  // lib/sod-123.tsx
2929
- import { Fragment as Fragment38, jsx as jsx43, jsxs as jsxs40 } from "react/jsx-runtime";
3088
+ import { Fragment as Fragment40, jsx as jsx45, jsxs as jsxs42 } from "react/jsx-runtime";
2930
3089
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2931
3090
  const bodyWidth = 2.9;
2932
3091
  const bodyLength10 = 1.3;
@@ -2937,8 +3096,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2937
3096
  const padContactLength = 0.4;
2938
3097
  const padThickness = leadThickness / 2;
2939
3098
  const bodyDistance = (fullWidth - bodyWidth) / 2;
2940
- return /* @__PURE__ */ jsxs40(Fragment38, { children: [
2941
- /* @__PURE__ */ jsx43(
3099
+ return /* @__PURE__ */ jsxs42(Fragment40, { children: [
3100
+ /* @__PURE__ */ jsx45(
2942
3101
  SmdChipLead,
2943
3102
  {
2944
3103
  position: {
@@ -2954,7 +3113,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2954
3113
  },
2955
3114
  1
2956
3115
  ),
2957
- /* @__PURE__ */ jsx43(
3116
+ /* @__PURE__ */ jsx45(
2958
3117
  SmdChipLead,
2959
3118
  {
2960
3119
  rotation: Math.PI,
@@ -2971,7 +3130,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
2971
3130
  },
2972
3131
  2
2973
3132
  ),
2974
- /* @__PURE__ */ jsx43(
3133
+ /* @__PURE__ */ jsx45(
2975
3134
  ChipBody,
2976
3135
  {
2977
3136
  center: { x: 0, y: 0, z: 0 },
@@ -2999,7 +3158,9 @@ export {
2999
3158
  FootprintPad,
3000
3159
  FootprintPlatedHole,
3001
3160
  Footprinter3d,
3161
+ HC49,
3002
3162
  LQFP,
3163
+ MS012,
3003
3164
  PinRow,
3004
3165
  QFN,
3005
3166
  QFP,