Footprint Widgets
!

Not installable via adom-wiki

This app has no published release. adom-wiki pkg install john/footprint-widgets will not work until a maintainer publishes a tarball with install.sh and uninstall.sh.

See the publishing docs for the package.json schema and tarball layout required to ship this app.

Contents

README

markdown

Footprint Widgets

Home of <adom-footprint-variants> — the README-instantiable widget that renders a part's footprint-variant family (baseline, heatsink vias, 300 µm solder-ball placement, rounded-rect pads, combined) straight from the page's .kicad_mod files. A sibling of Ray's adom/component-widgets, on the same shared adom-lbr hover bus.

Live demo

The LAN7800's six-variant family, parsed and drawn from real KiCad footprints:

Using it on your page

Put the tag on its own line (own paragraph) in any README.md:

::adom-footprint-variants{src="/OWNER/SLUG/render/part.variants.json"}

Attributes:

attr meaning
src absolute wiki path to the part's .variants.json manifest
variant initial selection: a suffix (-HV-SB-RR) or device name (solder balls)
heading override the title (defaults to the manifest's part)

Data contract

src points at the adom-footprint variants manifest — the file adom-footprint's heatsink / solderballs verbs already emit next to the generated mods:

{
  "part": "LAN7800",
  "package": "QFN-48 7x7mm",
  "variants": [
    { "suffix": "",    "device": "baseline",      "kicad_mod": "part.kicad_mod",
      "changed": "nothing; the page footprint as-is" },
    { "suffix": "-HV", "device": "heatsink vias", "kicad_mod": "part-HV.kicad_mod",
      "changed": "+16 thru_hole pads under the EP ..." }
  ]
}

Each variant's kicad_mod is fetched relative to the manifest's URL, so publishing the manifest and mods on one page is all it takes — no pre-baked geometry JSON, the widget parses the s-expressions in the browser:

  • SMD pads (rect / oval / roundrect with roundrect_rratio) → gold lands
  • thru_hole pads → heatsink vias (copper annular ring + drill)
  • filled fp_circles on User.9 (Adom.SolderBalls) → the 300 µm solder balls
  • F.SilkS / F.Fab / F.CrtYd graphics → silkscreen, fab outline, courtyard (also sizes the board)
  • anything a variant adds or changes vs the baseline gets an accent outline

Hovering a pad emits on the shared adom-lbr hover bus (BroadcastChannel('lbr-hover') + parent relay), so an ::adom-pinout on the same page cross-highlights the matching pin, and vice versa.

Why these variants exist

  • Heatsink vias pull heat from a QFN's exposed pad into the inner copper planes; numbering them like the EP keeps them on its net with clean DRC.
  • Solder-ball placement shows exactly where Adom jets 300 µm balls on pads and EP.
  • Rounded pads (the Altium habit): a sharp pad corner is a stress riser where copper fatigues and peels off the FR4 through thermal cycling; rounded corners — like an airplane window — spread the stress.

Generating a variants family

No manifest yet? tools/make-variants.py builds the whole family from a baseline .kicad_mod, reproducing the adom-footprint 1.0.22 heatsink / solderballs rules bit-for-bit (verified against adom/lan7800's files: same 16 vias, same 296 balls, same roundrect ratios):

python3 tools/make-variants.py part.kicad_mod --part KSZ9031RNX --package "QFN-48 7x7mm" --ep 49
# -> part-HV / part-SB / part-RR / part-HV-SB-RR .kicad_mod, part.variants.json, the rule JSONs

Rules: vias 1.2 mm pitch, 0.3 mm drill, 0.6 mm OD, 0.45 mm inset, numbered like the EP; balls Ø0.30 mm at 0.25 mm pitch on every pad (the EP gets a perimeter ring plus a ring around every via position, 0.55 mm keep-out); roundrect ratio 0.25 on signal pads, 0.1 on the EP.

Registration

Registered in the wiki-wide adom/widgets registry as adom-footprint-variants; readers' frames load it through the registry-gated /widget-script/adom-footprint-variants.js route, which serves widgets/footprint-variants-widget.js from this page's repo.