← All Pull Requests

Register adom-3d #4

Closed opened by John Lauer 2026-10-11

Registers adom-3d (frontend): <adom-3d> from adom/component-widgets widgets/model-3d-widget.js, attrs src, poster, heading, caption. It is a click-to-load view of any GLB in the canonical Adom 3D Viewer. The widget itself, and how it was tested, are in the companion PR on adom/component-widgets; merge that one first so the script exists.

🤖 Generated with Claude Code

Diff Skip to comments (1)

--- a/widgets.json+++ b/widgets.json@@ -1,134 +1,147 @@ [- {-  "name": "adom-pinout",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/pinout-widget.js",-  "element": "adom-pinout",-  "attrs": [-   "src",-   "layout",-   "heading"-  ]- },- {-  "name": "adom-chip-thumbnail",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/chip-thumbnail-widget.js",-  "element": "adom-chip-thumbnail",-  "attrs": [-   "src",-   "mpn",-   "package"-  ]- },- {-  "name": "adom-molecule",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/molecule-widget.js",-  "element": "adom-molecule",-  "attrs": [-   "src"-  ]- },- {-  "name": "adom-heatsink-via",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/heatsink-via-widget.js",-  "element": "adom-heatsink-via",-  "attrs": [-   "src"-  ]- },- {-  "name": "adom-symbol-variants",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/adom-symbol/render/widget/adom-symbol-variants.js",-  "element": "adom-symbol-variants",-  "attrs": [-   "src",-   "mpn",-   "layout",-   "outline"-  ]- },- {-  "name": "adom-footprint-variants",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/footprint-variants-widget.js",-  "element": "adom-footprint-variants",-  "attrs": [-   "src",-   "variant",-   "heading"-  ]- },- {-  "name": "adom-table",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/adom-table.js",-  "element": "adom-table",-  "attrs": [-   "src",-   "columns",-   "heading",-   "filter",-   "facet",-   "sort",-   "dim",-   "mark",-   "colorby"-  ]- },- {-  "name": "adom-component-lod",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/chip-thumbnail-widget.js",-  "element": "adom-component-lod",-  "attrs": [-   "src",-   "mpn"-  ]- },- {-  "name": "adom-stock",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/widgets/render/widgets/stock-widget.js",-  "element": "adom-stock",-  "attrs": [-   "src",-   "heading"-  ],-  "height": "auto"- },- {-  "name": "adom-verified",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/verified-widget.js",-  "element": "adom-verified",-  "attrs": [-   "src",-   "heading"-  ]- },- {-  "name": "adom-models",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/models-widget.js",-  "element": "adom-models",-  "attrs": [-   "src",-   "heading"-  ]- },- {-  "name": "adom-states",-  "mode": "frontend",-  "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/states-widget.js",-  "element": "adom-states",-  "attrs": [-   "src",-   "state",-   "heading"-  ]- }+  {+    "name": "adom-pinout",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/pinout-widget.js",+    "element": "adom-pinout",+    "attrs": [+      "src",+      "layout",+      "heading"+    ]+  },+  {+    "name": "adom-chip-thumbnail",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/chip-thumbnail-widget.js",+    "element": "adom-chip-thumbnail",+    "attrs": [+      "src",+      "mpn",+      "package"+    ]+  },+  {+    "name": "adom-molecule",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/molecule-widget.js",+    "element": "adom-molecule",+    "attrs": [+      "src"+    ]+  },+  {+    "name": "adom-heatsink-via",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/heatsink-via-widget.js",+    "element": "adom-heatsink-via",+    "attrs": [+      "src"+    ]+  },+  {+    "name": "adom-symbol-variants",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/adom-symbol/render/widget/adom-symbol-variants.js",+    "element": "adom-symbol-variants",+    "attrs": [+      "src",+      "mpn",+      "layout",+      "outline"+    ]+  },+  {+    "name": "adom-footprint-variants",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/footprint-variants-widget.js",+    "element": "adom-footprint-variants",+    "attrs": [+      "src",+      "variant",+      "heading"+    ]+  },+  {+    "name": "adom-table",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/adom-table.js",+    "element": "adom-table",+    "attrs": [+      "src",+      "columns",+      "heading",+      "filter",+      "facet",+      "sort",+      "dim",+      "mark",+      "colorby"+    ]+  },+  {+    "name": "adom-component-lod",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/chip-thumbnail-widget.js",+    "element": "adom-component-lod",+    "attrs": [+      "src",+      "mpn"+    ]+  },+  {+    "name": "adom-stock",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/widgets/render/widgets/stock-widget.js",+    "element": "adom-stock",+    "attrs": [+      "src",+      "heading"+    ],+    "height": "auto"+  },+  {+    "name": "adom-verified",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/verified-widget.js",+    "element": "adom-verified",+    "attrs": [+      "src",+      "heading"+    ]+  },+  {+    "name": "adom-models",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/models-widget.js",+    "element": "adom-models",+    "attrs": [+      "src",+      "heading"+    ]+  },+  {+    "name": "adom-states",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/states-widget.js",+    "element": "adom-states",+    "attrs": [+      "src",+      "state",+      "heading"+    ]+  },+  {+    "name": "adom-3d",+    "mode": "frontend",+    "script": "https://wiki.adom.inc/adom/component-widgets/render/widgets/model-3d-widget.js",+    "element": "adom-3d",+    "attrs": [+      "src",+      "poster",+      "heading",+      "caption"+    ]+  } ]+--- a/README.md+++ b/README.md@@ -1,61 +1,63 @@⋯ 58 unchanged lines ⋯ | `::adom-stock{src="/api/pages/OWNER/SLUG/stock"}` | live stock and price at Mouser, DigiKey and LCSC for a hardware page, from the wiki's cached vendor lookups (adom/wiki#186); component pages show it in their sidebar by themselves; `heading` | | `::adom-verified{src="..."}` | the "verified by" trust mark: big green check, who verified the page and when, per-variant coverage, and the full verification log with evidence; turns amber when a verified file changes; takes the page's `verification.json` — loads from adom/component-widgets | | `::adom-models{src="..."}` | every 3D file on a component page as a card: thumbnail, STEP or GLB, etched or unmarked and where the part number sits, what makes it different from its siblings, what it was derived from, a download, and whether the page still serves the file that was described (checked against the file listing, nothing downloaded); previous versions fold away; takes the page's `models.json` (adom/models@1) — loads from adom/component-widgets |+| `::adom-3d{src="..."}` | any GLB in the canonical Adom 3D Viewer, click to load (nothing loads until the reader asks; it unloads offscreen and releases the WebGL context); `poster` `heading` `caption`; publish the GLB without Draco, the frame cannot reach the decoder CDN; loads from adom/component-widgets |+

Comments

John Lauer · 9d ago

Replaced by #5, which adds the entry without reformatting widgets.json.

Log in to comment.