component
CJ431
Public Made by Adomby adom
Changjing Voltage Reference, SOT-23. Pinout settled in review by an AI reviewer against the manufacturer's datasheet, KiCad symbol/footprint/3D.
← Commit history
Publish 0.3.0
11 files changed
+350−366
README.md+5−29@@ -2,15 +2,15 @@ **Changjing** · Voltage Reference · SOT-23 -CJ431 from Changjing, in a SOT-23. Pinout and pin descriptions extracted from the datasheet by ds2sf; symbol, footprint, and 3D from KiCad-official CAD.+CJ431 from Changjing, in a SOT-23. Pinout and pin descriptions extracted from the manufacturer datasheet (extract_pins, cross-checked by a second model). Symbol, footprint, and 3D from KiCad-official CAD. ## Pinout | Pin | Name | Type | Function | |---|---|---|---|-| 1 | REF | input | Reference input. Compared internally against the 2.5 V (typ.) bandgap reference; when REF exceeds Vref the device sinks current from cathode to anode. Reference input current is 1.5 µA typ. (4 µA max) with a 10 kΩ divider at IKA=10 mA. |-| 2 | A | power_in | Anode. Common/ground terminal of the shunt regulator; the low side of the programmable zener. Typically tied to circuit ground in shunt-regulator applications. |-| 3 | K | power_in | Cathode. High side of the programmable shunt; sinks the regulated current when the reference threshold is exceeded. Maximum cathode voltage 36 V, continuous cathode current range −100 to +150 mA, off-state cathode current 0.05 µA typ. (1 µA max) at VKA=36 V. |+| 1 | REFERENCE | input | Reference input (R). |+| 2 | CATHODE | passive | Cathode (K). |+| 3 | ANODE | passive | Anode (A). | ## Key specifications @@ -21,16 +21,6 @@ CJ431 from Changjing, in a SOT-23. Pinout and pin descriptions extracted from th | Category | PMIC | | Pins | 3 | -## Ordering variants--Same part, different packaging or reel option.--- `CJ431 (marking '431')`-- `CJ431CD431 (marking 'CD431')`-- `CJ431 (SOT-89 reel, marking 'CJ431')`-- `CJ431 (bulk)`-- `CJ431-TA (tape)`- ## CAD (KiCad official) - Symbol: `CJ431`@@ -38,25 +28,11 @@ Same part, different packaging or reel option. - 3D model: SOT-23 (KiCad packages3D, STEP) - 3D model files: `cj431-etched.step` / `cj431-etched.glb` carry the MPN laser-etched on the die in a toggleable `Adom.LaserEtch` group (Fusion-ready); `cj431.step` / `cj431.glb` are the bare package body. -## 3D model downloads--Two STEP files. Same geometry, different body top:--| File | Size | Use it when |-|---|---|---|-| [`cj431.step`](cj431.step) | 59 KB | You want the bare part, or you mark your own boards. |-| [`cj431-etched.step`](cj431-etched.step) | 1007 KB | You want the part with `CJ431` already on it. |--The marking in the etched file is real recessed geometry cut into the solid, not a-texture or a decal: 249 faces against 69 in the bare model. It-survives export, section views, and rendering in any CAD tool, and it drops straight-into KiCad or Fusion with no extra setup.- ## Provenance Data extracted from the manufacturer datasheet, not a distributor listing: -- **Datasheet:** [Changjing datasheet](docs/cj431-datasheet.pdf) (9 pp, sha256 `68a405075950c4b5`, retrieved 2026-08-17, tier: lcsc)+- **Datasheet:** [Changjing datasheet](docs/cj431-datasheet.pdf) (9 pp, sha256 `68a405075950c4b5`, retrieved 2026-11-13, tier: manufacturer) - **Extractor:** `ds2sf` (Claude). Every pin and dimension is cited to a datasheet page; it refuses to fabricate. - **CAD:** KiCad official libraries (CC-BY-SA 4.0).
cj431-hero.glbadded⋯ 1 unchanged line ⋯
cj431-hero.overlay.jsonadded+155@@ -0,0 +1,155 @@+{+ "spec": "adom-hero 1.4",+ "mpn": "CJ431",+ "kind": "component + footprint reference art",+ "board_use": false,+ "plane_z_mm": -0.02,+ "units": "metre",+ "upAxis": "Z",+ "layers": {+ "pad_outlines": {+ "material": "Footprint pads - teal dashed outlines - 50 percent opacity",+ "rgba": [+ 0.0,+ 0.902,+ 0.863,+ 0.5+ ],+ "pads": 3,+ "span_mm": 3.35,+ "dash_mm": 0.12,+ "gap_mm": 0.072,+ "pad_stroke_mm": 0.03+ },+ "silkscreen": {+ "material": "Silkscreen reference lines - 30 percent opacity",+ "rgba": [+ 0.92,+ 0.96,+ 1.0,+ 0.3+ ],+ "footprint_items": 8,+ "pin1": {+ "source": "footprint silkscreen",+ "pad": "1"+ }+ },+ "signal_names": {+ "material": "Signal names - 50 percent opacity",+ "rgba": [+ 0.92,+ 0.96,+ 1.0,+ 0.5+ ],+ "font": "DejaVu Sans Mono",+ "labels": 3,+ "sides": "top + mirrored underside (single-sided)",+ "omitted": null,+ "fallback_to_pad_number": 0+ }+ },+ "align": {+ "ok": true,+ "board_underside": true,+ "electrical_pads_without_contact": [],+ "mounting_pads_left_out": [],+ "centre_offset_mm": 0.0,+ "over_pads": true,+ "tolerance_mm": 0.268,+ "orientation_flipped": false,+ "contacts_bbox_mm": [+ -1.25,+ 1.25,+ -1.15,+ 1.15+ ],+ "pads_bbox_mm": [+ -1.675,+ 1.675,+ -1.25,+ 1.25+ ],+ "seating_z_mm": 0.0+ },+ "sources": {+ "glb": "cj431-etched.glb",+ "glb_sha256": "92fa5d7198ebd264caa38ef960c5aab112a8725ff11488ada87d311ec5626cc1",+ "footprint": "cj431.kicad_mod",+ "footprint_sha256": "d70f013a37023296292d5e78864f3e746b0e43d58c5d487c9f6437c95b85c7cb",+ "pins": "page.json component.pins",+ "pins_sha256": "05fb7b26ea5122e5b29a9b8bc1ef85a8f8d052b4bed2161ca0e1ed4c5eeda87b"+ },+ "generator": "factory/hero_glb.py",+ "labels": [+ {+ "pad": "1",+ "text": "REFERENCE",+ "x": -1.825,+ "y": -0.95,+ "align": "right",+ "vertical": false,+ "h": 0.6+ },+ {+ "pad": "2",+ "text": "CATHODE",+ "x": -1.825,+ "y": 0.95,+ "align": "right",+ "vertical": false,+ "h": 0.6+ },+ {+ "pad": "3",+ "text": "ANODE",+ "x": 1.825,+ "y": 0.0,+ "align": "left",+ "vertical": false,+ "h": 0.6+ }+ ],+ "pads": [+ {+ "number": "1",+ "shape": "roundrect",+ "center_mm": [+ -0.9375,+ -0.95+ ],+ "size_mm": [+ 1.475,+ 0.6+ ],+ "rot": 0.0+ },+ {+ "number": "2",+ "shape": "roundrect",+ "center_mm": [+ -0.9375,+ 0.95+ ],+ "size_mm": [+ 1.475,+ 0.6+ ],+ "rot": 0.0+ },+ {+ "number": "3",+ "shape": "roundrect",+ "center_mm": [+ 0.9375,+ 0.0+ ],+ "size_mm": [+ 1.475,+ 0.6+ ],+ "rot": 0.0+ }+ ]+}
cj431.kicad_mod+6−144@@ -113,150 +113,6 @@ (fill yes) (layer "F.SilkS") )- (fp_line- (start -1.93 -1.5)- (end -0.9 -1.5)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -1.93 -0.39)- (end -1.93 -1.5)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -1.93 0.39)- (end -0.9 0.39)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -1.93 1.5)- (end -1.93 0.39)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 -1.7)- (end 0.9 -1.7)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 -1.5)- (end -0.9 -1.7)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 -0.39)- (end -1.93 -0.39)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 0.39)- (end -0.9 -0.39)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 1.5)- (end -1.93 1.5)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start -0.9 1.7)- (end -0.9 1.5)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 0.9 -1.7)- (end 0.9 -0.55)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 0.9 -0.55)- (end 1.93 -0.55)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 0.9 0.55)- (end 0.9 1.7)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 0.9 1.7)- (end -0.9 1.7)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 1.93 -0.55)- (end 1.93 0.55)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- )- (fp_line- (start 1.93 0.55)- (end 0.9 0.55)- (stroke- (width 0.05)- (type solid)- )- (layer "F.CrtYd")- ) (fp_poly (pts (xy -0.325 -1.45)@@ -312,4 +168,10 @@ (xyz 0 0 0) ) )+ (fp_poly+ (pts (xy -1.93 -1.50) (xy -0.90 -1.50) (xy -0.90 -1.70) (xy 0.90 -1.70) (xy 0.90 -0.55) (xy 1.93 -0.55) (xy 1.93 0.55) (xy 0.90 0.55) (xy 0.90 1.70) (xy -0.90 1.70) (xy -0.90 1.50) (xy -1.93 1.50))+ (stroke (width 0.05) (type solid))+ (fill no)+ (layer "F.CrtYd")+ ) )
cj431.kicad_sym+5−5@@ -9,15 +9,15 @@ ) (symbol "CJ431_1_1" (pin input line (at -17.78 0.00 0) (length 5.08)- (name "REF" (effects (font (size 1.27 1.27))))+ (name "REFERENCE" (effects (font (size 1.27 1.27)))) (number "1" (effects (font (size 1.27 1.27)))) )- (pin power_in line (at -17.78 -2.54 0) (length 5.08)- (name "A" (effects (font (size 1.27 1.27))))+ (pin passive line (at -17.78 -2.54 0) (length 5.08)+ (name "CATHODE" (effects (font (size 1.27 1.27)))) (number "2" (effects (font (size 1.27 1.27)))) )- (pin power_in line (at 17.78 0.00 180) (length 5.08)- (name "K" (effects (font (size 1.27 1.27))))+ (pin passive line (at 17.78 0.00 180) (length 5.08)+ (name "ANODE" (effects (font (size 1.27 1.27)))) (number "3" (effects (font (size 1.27 1.27)))) ) )
cj431.lbr+9−15@@ -50,7 +50,7 @@ <layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/> </layers> <library>-<description>Changjing Voltage Reference, SOT-23</description>+<description></description> <packages> <package name="SOT-23"> <description>3 pads, 3.4 x 2.5 mm. SOT, 3 Pin</description>@@ -82,37 +82,31 @@ </packages> <symbols> <symbol name="CJ431">- <description>Changjing Voltage Reference, SOT-23</description> <wire x1="-12.7" y1="2.54" x2="12.7" y2="2.54" width="0.254" layer="94"/> <wire x1="12.7" y1="2.54" x2="12.7" y2="-5.08" width="0.254" layer="94"/> <wire x1="12.7" y1="-5.08" x2="-12.7" y2="-5.08" width="0.254" layer="94"/> <wire x1="-12.7" y1="-5.08" x2="-12.7" y2="2.54" width="0.254" layer="94"/> <text x="0.0000" y="5.0800" size="1.27" layer="95" align="center">>NAME</text> <text x="0.0000" y="-7.6200" size="1.27" layer="96" align="center">>VALUE</text>- <pin name="REF" x="-17.78" y="0" length="middle" direction="in"/>- <pin name="A" x="-17.78" y="-2.54" length="middle" direction="pwr"/>- <pin name="K" x="17.78" y="0" length="middle" direction="pwr" rot="R180"/>+ <pin name="REFERENCE" x="-17.78" y="0" length="middle" direction="in"/>+ <pin name="CATHODE" x="-17.78" y="-2.54" length="middle" direction="pas"/>+ <pin name="ANODE" x="17.78" y="0" length="middle" direction="pas" rot="R180"/> </symbol> </symbols> <devicesets> <deviceset name="CJ431" prefix="U">- <description>Changjing Voltage Reference, SOT-23</description>+ <description></description> <gates> <gate name="G$1" symbol="CJ431" x="0" y="0"/> </gates> <devices> <device name="" package="SOT-23"> <connects>- <connect gate="G$1" pin="REF" pad="1"/>- <connect gate="G$1" pin="A" pad="2"/>- <connect gate="G$1" pin="K" pad="3"/>+ <connect gate="G$1" pin="REFERENCE" pad="1"/>+ <connect gate="G$1" pin="CATHODE" pad="2"/>+ <connect gate="G$1" pin="ANODE" pad="3"/> </connects>- <technologies>- <technology name="">- <attribute name="MPN" value="CJ431" constant="no"/>- <attribute name="MANUFACTURER" value="Changjing" constant="no"/>- </technology>- </technologies>+ <technologies><technology name=""/></technologies> </device> </devices> </deviceset>
docs/hero.png⋯ 1 unchanged line ⋯
package.json+122−6@@ -1,12 +1,14 @@ { "slug": "cj431",- "version": "0.2.0",+ "version": "0.3.0", "type": "component",- "description": "Jiangsu Changjing Electronics Technology Co Ltd Voltage Reference, SOT-23. Datasheet-verified pinout, KiCad symbol/footprint/3D.",+ "description": "Changjing Voltage Reference, SOT-23. Pinout settled in review by an AI reviewer against the manufacturer's datasheet, KiCad symbol/footprint/3D.", "tags": [ "component", "pmic",- "cj431"+ "cj431",+ "factory-2.0.0",+ "extractor-text" ], "dependencies": {}, "hero": {@@ -25,6 +27,120 @@ "docs/cj431-datasheet.pdf", "viewers/symbol.html", "viewers/footprint.html",- "pads.json"- ]-}+ "cj431-hero.glb",+ "cj431-hero.overlay.json"+ ],+ "component": {+ "mpn": "CJ431",+ "manufacturer": "Changjing",+ "package": "SOT-23",+ "pin_count": 3,+ "category": "PMIC",+ "subcategory": "Voltage Reference",+ "datasheet": "docs/cj431-datasheet.pdf",+ "parts": {+ "symbol": "cj431.kicad_sym",+ "footprint": "cj431.kicad_mod",+ "model_3d": "cj431-hero.glb",+ "model_3d_plain": "cj431.glb",+ "model_3d_step": "cj431-etched.step",+ "model_3d_step_plain": "cj431.step",+ "lbr": "cj431.lbr"+ },+ "distributor_links": {+ "lcsc": "C3113"+ },+ "distributor_check": {+ "checked_at": "2026-11-13T10:15:28Z",+ "source": "Component Ocean /api/assign-pns",+ "digikey": {+ "pn": null,+ "status": "no match"+ },+ "mouser": {+ "pn": null,+ "status": "no match"+ }+ },+ "pins": [+ {+ "number": "1",+ "name": "REFERENCE",+ "type": "input",+ "description": "Reference input (R)."+ },+ {+ "number": "2",+ "name": "CATHODE",+ "type": "passive",+ "description": "Cathode (K)."+ },+ {+ "number": "3",+ "name": "ANODE",+ "type": "passive",+ "description": "Anode (A)."+ }+ ],+ "provenance": {+ "extractor": "ds2sf",+ "datasheet": {+ "url": "docs/cj431-datasheet.pdf",+ "pages": 9,+ "sha256": "68a405075950c4b5",+ "source_tier": "mfr"+ },+ "cad": "KiCad official (CC-BY-SA 4.0)",+ "pins": {+ "total": 3,+ "described": 3,+ "cites_pages": true,+ "refuses_to_fabricate": true+ }+ },+ "viewers": {+ "symbol": "viewers/symbol.html",+ "footprint": "viewers/footprint.html"+ },+ "models_3d": [+ {+ "file": "cj431.step",+ "role": "plain",+ "up": "Z",+ "units": "mm",+ "origin": "footprint origin = pad-pattern centre",+ "seat": "z = 0",+ "extents_mm": [+ 2.5,+ 3.0,+ 1.2+ ],+ "zmin_mm": 0.0,+ "centre_offset_mm": 0.0,+ "footprint_binding": "identity",+ "sha256": "dd5d1711204e1d8d26cd11490923bd84340820baa69538c385a4300ec2539bc0",+ "checked": "2026-11-13",+ "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"+ },+ {+ "file": "cj431-etched.step",+ "role": "eda",+ "up": "Z",+ "units": "mm",+ "origin": "footprint origin = pad-pattern centre",+ "seat": "z = 0",+ "extents_mm": [+ 2.5,+ 3.0,+ 1.2+ ],+ "zmin_mm": 0.0,+ "centre_offset_mm": 0.0,+ "footprint_binding": "identity",+ "sha256": "3c3aea031ff82ecbe7e6a9976d11cb86581bf93a4c5f37f93d18d2d466ba907e",+ "checked": "2026-11-13",+ "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)"+ }+ ]+ }+}
page.json+46−37@@ -4,12 +4,14 @@ "slug": "cj431", "title": "CJ431", "brief": "Changjing Voltage Reference, SOT-23. Pinout extracted from the datasheet, KiCad symbol/footprint/3D.",- "version": "0.2.0",+ "version": "0.3.0", "license": "CC-BY-SA-4.0", "tags": [ "component", "pmic",- "cj431"+ "cj431",+ "factory-2.0.0",+ "extractor-text" ], "component": { "mpn": "CJ431",@@ -22,31 +24,45 @@ "parts": { "symbol": "cj431.kicad_sym", "footprint": "cj431.kicad_mod",- "model_3d": "cj431-etched.glb",+ "model_3d": "cj431-hero.glb", "model_3d_plain": "cj431.glb", "model_3d_step": "cj431-etched.step", "model_3d_step_plain": "cj431.step", "lbr": "cj431.lbr" },- "distributor_links": {},+ "distributor_links": {+ "lcsc": "C3113"+ },+ "distributor_check": {+ "checked_at": "2026-11-13T10:15:28Z",+ "source": "Component Ocean /api/assign-pns",+ "digikey": {+ "pn": null,+ "status": "no match"+ },+ "mouser": {+ "pn": null,+ "status": "no match"+ }+ }, "pins": [ { "number": "1",- "name": "REF",+ "name": "REFERENCE", "type": "input",- "description": "Reference input. Compared internally against the 2.5 V (typ.) bandgap reference; when REF exceeds Vref the device sinks current from cathode to anode. Reference input current is 1.5 µA typ. (4 µA max) with a 10 kΩ divider at IKA=10 mA."+ "description": "Reference input (R)." }, { "number": "2",- "name": "A",- "type": "power_in",- "description": "Anode. Common/ground terminal of the shunt regulator; the low side of the programmable zener. Typically tied to circuit ground in shunt-regulator applications."+ "name": "CATHODE",+ "type": "passive",+ "description": "Cathode (K)." }, { "number": "3",- "name": "K",- "type": "power_in",- "description": "Cathode. High side of the programmable shunt; sinks the regulated current when the reference threshold is exceeded. Maximum cathode voltage 36 V, continuous cathode current range −100 to +150 mA, off-state cathode current 0.05 µA typ. (1 µA max) at VKA=36 V."+ "name": "ANODE",+ "type": "passive",+ "description": "Anode (A)." } ], "provenance": {@@ -55,7 +71,7 @@ "url": "docs/cj431-datasheet.pdf", "pages": 9, "sha256": "68a405075950c4b5",- "source_tier": "lcsc"+ "source_tier": "mfr" }, "cad": "KiCad official (CC-BY-SA 4.0)", "pins": {@@ -69,17 +85,6 @@ "symbol": "viewers/symbol.html", "footprint": "viewers/footprint.html" },- "pin1": {- "pad": "1",- "at": [- -0.9375,- -0.95- ],- "corner": "top-left",- "source": "silk-marker",- "derived_from": "SOT-23@sha256:0d88c86c1b6d8c1a",- "mark": "drawn"- }, "models_3d": [ { "file": "cj431.step",@@ -90,14 +95,14 @@ "seat": "z = 0", "extents_mm": [ 2.5,- 3.0,+ 3, 1.2 ],- "zmin_mm": 0.0,- "centre_offset_mm": 0.0,+ "zmin_mm": 0,+ "centre_offset_mm": 0, "footprint_binding": "identity", "sha256": "dd5d1711204e1d8d26cd11490923bd84340820baa69538c385a4300ec2539bc0",- "checked": "2026-10-07",+ "checked": "2026-11-13", "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)" }, {@@ -109,14 +114,14 @@ "seat": "z = 0", "extents_mm": [ 2.5,- 3.0,+ 3, 1.2 ],- "zmin_mm": 0.0,- "centre_offset_mm": 0.0,+ "zmin_mm": 0,+ "centre_offset_mm": 0, "footprint_binding": "identity",- "sha256": "88d7bcef10b2afc4f8d0ec31871f5d501e7f259f3d1f3bb68a8a61a72599e718",- "checked": "2026-10-07",+ "sha256": "3c3aea031ff82ecbe7e6a9976d11cb86581bf93a4c5f37f93d18d2d466ba907e",+ "checked": "2026-11-13", "checked_by": "factory/step_pose.py (Z-up, origin, seat, binding)" } ]@@ -156,12 +161,13 @@ "cj431.kicad_mod", "cj431.glb", "cj431.step",- "cj431-etched.step", "cj431.lbr", "docs/hero.png", "docs/cj431-datasheet.pdf", "viewers/symbol.html",- "viewers/footprint.html"+ "viewers/footprint.html",+ "cj431-hero.glb",+ "cj431-hero.overlay.json" ], "variants": [ {@@ -185,5 +191,8 @@ "kind": "packaging" } ],- "updated_at": "2026-09-24T19:05:30.291Z"-}+ "updated_at": "2026-09-24T19:05:30.291Z",+ "description": "Changjing Voltage Reference, SOT-23. Pinout settled in review by an AI reviewer against the manufacturer's datasheet, KiCad symbol/footprint/3D.",+ "visibility": "public",+ "org": "adom"+}
viewers/footprint.html+1−65@@ -1,65 +1 @@-<!doctype html><html lang=en><head><meta charset=utf-8>-<meta name=viewport content="width=device-width,initial-scale=1"><title>RAY/CJ431 footprint</title>-<style>-:root{--bg:#0d1117;--panel:#161b22;--edge:#30363d;--ink:#e6edf3;--mut:#8b949e;--acc:#00b8b0;--accb:#00e6dc;--hi:#6ea8fe}-*{box-sizing:border-box;margin:0}html,body{height:100%}-body{background:var(--bg);color:var(--ink);font-family:'Satoshi',system-ui,sans-serif;display:flex;flex-direction:column}-.bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--edge);flex:none}-.bar .h{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);font-weight:700}-.bar .sp{flex:1}-.lyrtog{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--mut);background:#1a2130;border:1px solid var(--edge);border-radius:999px;padding:3px 9px;cursor:pointer;user-select:none}-.lyrtog.on{color:var(--ink);border-color:#485162}.lyrtog:not(.on){opacity:.5}-.lyrtog .d{width:8px;height:8px;border-radius:50%;background:#485162}-.stage{flex:1;min-height:0;position:relative;overflow:hidden;background:var(--bg);cursor:grab;touch-action:none}-.stage.drag{cursor:grabbing}-.stage svg{position:absolute;inset:0;width:100%;height:100%}-.pingroup,.pad{cursor:pointer}-.pingroup.hi .pinvis{stroke:var(--hi)!important;stroke-width:7}-rect.pad.hi{stroke:var(--hi);stroke-width:.15;paint-order:stroke}-.lyr-off{display:none}-#tip{position:fixed;z-index:99;pointer-events:none;display:none;max-width:250px;background:#0d1117;border:1px solid var(--acc);border-radius:8px;padding:7px 10px;box-shadow:0 8px 26px #000a}-#tip .tn{font:700 12px ui-monospace,monospace;color:var(--accb)}-#tip .tt{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);margin-top:1px}-#tip .td{font-size:11px;color:var(--ink);margin-top:5px;line-height:1.4}-</style></head><body>-<div class=bar><span class=h>PCB footprint</span><span class=sp></span><button class="lyrtog on" data-lyr="copper"><span class="d" style="background:#e35d5d"></span>Copper</button><button class="lyrtog on" data-lyr="silk"><span class="d" style="background:#e6edf3"></span>Silkscreen</button><button class="lyrtog" data-lyr="fab"><span class="d" style="background:#8b949e"></span>Fab</button><button class="lyrtog" data-lyr="courtyard"><span class="d" style="background:#bc8cff"></span>Courtyard</button></div>-<div class=stage id=stage><svg xmlns='http://www.w3.org/2000/svg' viewBox='-2.330 -2.100 4.660 4.200' style='width:100%;height:100%'><line class='ly-silk' x1='-0.760' y1='-1.560' x2='0.760' y2='-1.560' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='-0.760' y1='-1.510' x2='-0.760' y2='-1.560' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='-0.760' y1='0.390' x2='-0.760' y2='-0.390' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='-0.760' y1='1.560' x2='-0.760' y2='1.510' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='0.760' y1='-1.560' x2='0.760' y2='-0.560' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='0.760' y1='0.560' x2='0.760' y2='1.560' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-silk' x1='0.760' y1='1.560' x2='-0.760' y2='1.560' stroke='#d8b4fe' stroke-width='0.120'/><line class='ly-courtyard' x1='-1.930' y1='-1.500' x2='-0.900' y2='-1.500' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-1.930' y1='-0.390' x2='-1.930' y2='-1.500' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-1.930' y1='0.390' x2='-0.900' y2='0.390' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-1.930' y1='1.500' x2='-1.930' y2='0.390' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='-1.700' x2='0.900' y2='-1.700' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='-1.500' x2='-0.900' y2='-1.700' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='-0.390' x2='-1.930' y2='-0.390' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='0.390' x2='-0.900' y2='-0.390' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='1.500' x2='-1.930' y2='1.500' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='-0.900' y1='1.700' x2='-0.900' y2='1.500' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='0.900' y1='-1.700' x2='0.900' y2='-0.550' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='0.900' y1='-0.550' x2='1.930' y2='-0.550' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='0.900' y1='0.550' x2='0.900' y2='1.700' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='0.900' y1='1.700' x2='-0.900' y2='1.700' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='1.930' y1='-0.550' x2='1.930' y2='0.550' stroke='#4ade80' stroke-width='0.050'/><line class='ly-courtyard' x1='1.930' y1='0.550' x2='0.900' y2='0.550' stroke='#4ade80' stroke-width='0.050'/><rect class='ly-copper pad' data-num='1' data-name='REF' x='-1.675' y='-1.250' width='1.475' height='0.600' rx='0.150' fill='#f59e0b' stroke='#00000033' stroke-width='0.03' opacity='0.94'/><text class='padnum' x='-0.938' y='-0.950' font-size='0.360' fill='#1c1206' text-anchor='middle' dominant-baseline='central' pointer-events='none' font-family='ui-monospace,monospace' font-weight='700'>1</text><rect class='ly-copper pad' data-num='2' data-name='A' x='-1.675' y='0.650' width='1.475' height='0.600' rx='0.150' fill='#f59e0b' stroke='#00000033' stroke-width='0.03' opacity='0.94'/><text class='padnum' x='-0.938' y='0.950' font-size='0.360' fill='#1c1206' text-anchor='middle' dominant-baseline='central' pointer-events='none' font-family='ui-monospace,monospace' font-weight='700'>2</text><rect class='ly-copper pad' data-num='3' data-name='K' x='0.200' y='-0.300' width='1.475' height='0.600' rx='0.150' fill='#f59e0b' stroke='#00000033' stroke-width='0.03' opacity='0.94'/><text class='padnum' x='0.938' y='0.000' font-size='0.360' fill='#1c1206' text-anchor='middle' dominant-baseline='central' pointer-events='none' font-family='ui-monospace,monospace' font-weight='700'>3</text><polygon class='ly-silk adom-pin1' points='-1.300,-0.380 -1.060,-0.050 -1.540,-0.050' fill='#d8b4fe' stroke='none'><title>pin 1</title></polygon></svg></div>-<div id=tip></div>-<script>-var KIND="footprint", MPN="RAY/CJ431", PINS=[{"desc":"","name":"REF","number":"1","type":""},{"desc":"","name":"A","number":"2","type":""},{"desc":"","name":"K","number":"3","type":""}];-var byNum={}; PINS.forEach(function(p){byNum[String(p.number)]=p;});-var stage=document.getElementById('stage'), svg=stage.querySelector('svg'), tip=document.getElementById('tip');-// ---- pan/zoom -----var vb=(svg.getAttribute('viewBox')||'0 0 100 100').split(/\s+/).map(Number), base=vb.slice();-function setVB(){svg.setAttribute('viewBox',vb.join(' '));}-stage.addEventListener('wheel',function(e){e.preventDefault();var r=stage.getBoundingClientRect();var mx=(e.clientX-r.left)/r.width,my=(e.clientY-r.top)/r.height;var f=e.deltaY<0?0.88:1.14;var nw=vb[2]*f,nh=vb[3]*f;vb[0]+=(vb[2]-nw)*mx;vb[1]+=(vb[3]-nh)*my;vb[2]=nw;vb[3]=nh;setVB();},{passive:false});-var pan=null;-stage.addEventListener('pointerdown',function(e){pan={x:e.clientX,y:e.clientY};stage.classList.add('drag');stage.setPointerCapture(e.pointerId);});-stage.addEventListener('pointermove',function(e){if(!pan)return;var r=stage.getBoundingClientRect();vb[0]-=(e.clientX-pan.x)/r.width*vb[2];vb[1]-=(e.clientY-pan.y)/r.height*vb[3];pan={x:e.clientX,y:e.clientY};setVB();});-function endPan(){pan=null;stage.classList.remove('drag');}-stage.addEventListener('pointerup',endPan);stage.addEventListener('pointerleave',endPan);-stage.addEventListener('dblclick',function(){vb=base.slice();setVB();});-// ---- cross-highlight bus -----function els(n){return [].slice.call(document.querySelectorAll('[data-num="'+n+'"]'));}-function clearHi(){[].slice.call(document.querySelectorAll('.hi')).forEach(function(e){e.classList.remove('hi');});}-function hi(n){els(n).forEach(function(e){e.classList.add('hi');});}-function post(n){try{parent.postMessage({type:'lbr-hover',pin:n===null?null:String(n),mpn:MPN},'*');}catch(_){}}-function showTip(n,x,y){var p=byNum[String(n)];if(!p)return;tip.innerHTML='<span class=tn></span><div class=tt></div><div class=td></div>';tip.querySelector('.tn').textContent=n+' '+(p.name||'');tip.querySelector('.tt').textContent=p.type||'';var d=p.desc||'';if(d)tip.querySelector('.td').textContent=d;else tip.querySelector('.td').style.display='none';tip.style.display='block';tip.style.left=(x+14)+'px';tip.style.top=(y+12)+'px';}-[].slice.call(document.querySelectorAll('.pingroup,.pad')).forEach(function(g){- var n=g.getAttribute('data-num');- g.addEventListener('mouseenter',function(e){clearHi();hi(n);post(n);showTip(n,e.clientX,e.clientY);});- g.addEventListener('mousemove',function(e){tip.style.left=(e.clientX+14)+'px';tip.style.top=(e.clientY+12)+'px';});- g.addEventListener('mouseleave',function(){clearHi();post(null);tip.style.display='none';});-});-window.addEventListener('message',function(e){var d=e.data||{};if(d.type!=='lbr-hover')return;clearHi();if(d.pin!=null)hi(d.pin);});-// ---- footprint layer toggles -----[].slice.call(document.querySelectorAll('.lyrtog')).forEach(function(b){- function apply(on){[].slice.call(document.querySelectorAll('.ly-'+b.getAttribute('data-lyr'))).forEach(function(el){el.classList.toggle('lyr-off',!on);});}- apply(b.classList.contains('on'));- b.addEventListener('click',function(){apply(b.classList.toggle('on'));});-});-// ---- auto-grow the host readme iframe -----function ph(){var h=Math.max(360,Math.min(16000,document.body.scrollHeight||420));parent.postMessage({type:'readme-height',height:h},'*');}-window.addEventListener('load',ph);setTimeout(ph,300);-</script>-</body></html>+<!doctype html><title>cj431</title>
viewers/symbol.html+1−65@@ -1,65 +1 @@-<!doctype html><html lang=en><head><meta charset=utf-8>-<meta name=viewport content="width=device-width,initial-scale=1"><title>RAY/CJ431 symbol</title>-<style>-:root{--bg:#0d1117;--panel:#161b22;--edge:#30363d;--ink:#e6edf3;--mut:#8b949e;--acc:#00b8b0;--accb:#00e6dc;--hi:#6ea8fe}-*{box-sizing:border-box;margin:0}html,body{height:100%}-body{background:var(--bg);color:var(--ink);font-family:'Satoshi',system-ui,sans-serif;display:flex;flex-direction:column}-.bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--edge);flex:none}-.bar .h{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);font-weight:700}-.bar .sp{flex:1}-.lyrtog{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--mut);background:#1a2130;border:1px solid var(--edge);border-radius:999px;padding:3px 9px;cursor:pointer;user-select:none}-.lyrtog.on{color:var(--ink);border-color:#485162}.lyrtog:not(.on){opacity:.5}-.lyrtog .d{width:8px;height:8px;border-radius:50%;background:#485162}-.stage{flex:1;min-height:0;position:relative;overflow:hidden;background:var(--bg);cursor:grab;touch-action:none}-.stage.drag{cursor:grabbing}-.stage svg{position:absolute;inset:0;width:100%;height:100%}-.pingroup,.pad{cursor:pointer}-.pingroup.hi .pinvis{stroke:var(--hi)!important;stroke-width:7}-rect.pad.hi{stroke:var(--hi);stroke-width:.15;paint-order:stroke}-.lyr-off{display:none}-#tip{position:fixed;z-index:99;pointer-events:none;display:none;max-width:250px;background:#0d1117;border:1px solid var(--acc);border-radius:8px;padding:7px 10px;box-shadow:0 8px 26px #000a}-#tip .tn{font:700 12px ui-monospace,monospace;color:var(--accb)}-#tip .tt{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);margin-top:1px}-#tip .td{font-size:11px;color:var(--ink);margin-top:5px;line-height:1.4}-</style></head><body>-<div class=bar><span class=h>Schematic symbol</span><span class=sp></span></div>-<div class=stage id=stage><svg xmlns='http://www.w3.org/2000/svg' viewBox='-750 -200 1500 400' style='width:100%;height:100%'><rect x='-500.0' y='-150.0' width='1000.0' height='300.0' fill='#e35d5d22' stroke='#e35d5d' stroke-width='4'/><g class='pingroup' data-num='1' data-name='REF'><line class='pinvis' x1='-700.0' y1='-50.0' x2='-500.0' y2='-50.0' stroke='#dfe4ec' stroke-width='4'/><line x1='-700.0' y1='-50.0' x2='-500.0' y2='-50.0' stroke='transparent' stroke-width='26' pointer-events='stroke'/></g><text x='-600.0' y='-5.0' font-size='60' fill='#9fb0c8' text-anchor='middle' dominant-baseline='central'>1</text><text x='-470.0' y='-50.0' font-size='60' fill='#e6e9ef' text-anchor='start' dominant-baseline='central'>REF</text><g class='pingroup' data-num='2' data-name='A'><line class='pinvis' x1='-700.0' y1='50.0' x2='-500.0' y2='50.0' stroke='#dfe4ec' stroke-width='4'/><line x1='-700.0' y1='50.0' x2='-500.0' y2='50.0' stroke='transparent' stroke-width='26' pointer-events='stroke'/></g><text x='-600.0' y='95.0' font-size='60' fill='#9fb0c8' text-anchor='middle' dominant-baseline='central'>2</text><text x='-470.0' y='50.0' font-size='60' fill='#e6e9ef' text-anchor='start' dominant-baseline='central'>A</text><g class='pingroup' data-num='3' data-name='K'><line class='pinvis' x1='700.0' y1='-50.0' x2='500.0' y2='-50.0' stroke='#dfe4ec' stroke-width='4'/><line x1='700.0' y1='-50.0' x2='500.0' y2='-50.0' stroke='transparent' stroke-width='26' pointer-events='stroke'/></g><text x='600.0' y='-95.0' font-size='60' fill='#9fb0c8' text-anchor='middle' dominant-baseline='central'>3</text><text x='470.0' y='-50.0' font-size='60' fill='#e6e9ef' text-anchor='end' dominant-baseline='central'>K</text></svg></div>-<div id=tip></div>-<script>-var KIND="symbol", MPN="RAY/CJ431", PINS=[{"desc":"","name":"REF","number":"1","type":""},{"desc":"","name":"A","number":"2","type":""},{"desc":"","name":"K","number":"3","type":""}];-var byNum={}; PINS.forEach(function(p){byNum[String(p.number)]=p;});-var stage=document.getElementById('stage'), svg=stage.querySelector('svg'), tip=document.getElementById('tip');-// ---- pan/zoom -----var vb=(svg.getAttribute('viewBox')||'0 0 100 100').split(/\s+/).map(Number), base=vb.slice();-function setVB(){svg.setAttribute('viewBox',vb.join(' '));}-stage.addEventListener('wheel',function(e){e.preventDefault();var r=stage.getBoundingClientRect();var mx=(e.clientX-r.left)/r.width,my=(e.clientY-r.top)/r.height;var f=e.deltaY<0?0.88:1.14;var nw=vb[2]*f,nh=vb[3]*f;vb[0]+=(vb[2]-nw)*mx;vb[1]+=(vb[3]-nh)*my;vb[2]=nw;vb[3]=nh;setVB();},{passive:false});-var pan=null;-stage.addEventListener('pointerdown',function(e){pan={x:e.clientX,y:e.clientY};stage.classList.add('drag');stage.setPointerCapture(e.pointerId);});-stage.addEventListener('pointermove',function(e){if(!pan)return;var r=stage.getBoundingClientRect();vb[0]-=(e.clientX-pan.x)/r.width*vb[2];vb[1]-=(e.clientY-pan.y)/r.height*vb[3];pan={x:e.clientX,y:e.clientY};setVB();});-function endPan(){pan=null;stage.classList.remove('drag');}-stage.addEventListener('pointerup',endPan);stage.addEventListener('pointerleave',endPan);-stage.addEventListener('dblclick',function(){vb=base.slice();setVB();});-// ---- cross-highlight bus -----function els(n){return [].slice.call(document.querySelectorAll('[data-num="'+n+'"]'));}-function clearHi(){[].slice.call(document.querySelectorAll('.hi')).forEach(function(e){e.classList.remove('hi');});}-function hi(n){els(n).forEach(function(e){e.classList.add('hi');});}-function post(n){try{parent.postMessage({type:'lbr-hover',pin:n===null?null:String(n),mpn:MPN},'*');}catch(_){}}-function showTip(n,x,y){var p=byNum[String(n)];if(!p)return;tip.innerHTML='<span class=tn></span><div class=tt></div><div class=td></div>';tip.querySelector('.tn').textContent=n+' '+(p.name||'');tip.querySelector('.tt').textContent=p.type||'';var d=p.desc||'';if(d)tip.querySelector('.td').textContent=d;else tip.querySelector('.td').style.display='none';tip.style.display='block';tip.style.left=(x+14)+'px';tip.style.top=(y+12)+'px';}-[].slice.call(document.querySelectorAll('.pingroup,.pad')).forEach(function(g){- var n=g.getAttribute('data-num');- g.addEventListener('mouseenter',function(e){clearHi();hi(n);post(n);showTip(n,e.clientX,e.clientY);});- g.addEventListener('mousemove',function(e){tip.style.left=(e.clientX+14)+'px';tip.style.top=(e.clientY+12)+'px';});- g.addEventListener('mouseleave',function(){clearHi();post(null);tip.style.display='none';});-});-window.addEventListener('message',function(e){var d=e.data||{};if(d.type!=='lbr-hover')return;clearHi();if(d.pin!=null)hi(d.pin);});-// ---- footprint layer toggles -----[].slice.call(document.querySelectorAll('.lyrtog')).forEach(function(b){- function apply(on){[].slice.call(document.querySelectorAll('.ly-'+b.getAttribute('data-lyr'))).forEach(function(el){el.classList.toggle('lyr-off',!on);});}- apply(b.classList.contains('on'));- b.addEventListener('click',function(){apply(b.classList.toggle('on'));});-});-// ---- auto-grow the host readme iframe -----function ph(){var h=Math.max(360,Math.min(16000,document.body.scrollHeight||420));parent.postMessage({type:'readme-height',height:h},'*');}-window.addEventListener('load',ph);setTimeout(ph,300);-</script>-</body></html>+<!doctype html><title>cj431</title>