£849.00
SKU 100996 · In stock
The two widget buttons should appear directly under Add to cart, in the widget's own styling — not pink, not Comic Sans.
Initialised from the script tag's data-* attributes
with no data-target-selector. Open both modals: the 3D
one should load the GLB lazily, and the AR one should show a QR code
on desktop or a Place in Your Room button on a phone.
A different product id, inserted with
targetSelector: '#explicit-slot' and
insertPosition: 'append'. Proves the widget is not
hardcoded to one product and that two instances coexist.
A product id that is in no manifest and has no
glbUrl. Expected: no buttons at all —
not a bar that opens an empty modal. The manifest is read first, and
a product with nothing in it is injected nowhere. The console says
which of the two happened; the page is otherwise untouched.
targetSelector: '.does-not-exist' and then a selector
that isn't valid CSS at all. Expected: nothing injected, nothing
thrown, Add to cart still works.
The same product initialised with
site: 'atozfurniture.ae'. On the real domain this
happens automatically from the hostname; here the key is forced,
because localhost matches nothing. The buttons should
come out navy with 4px corners instead of the neutral default, and
the QR link should gain &site=atozfurniture.ae so
the AR page lands branded too.
Home & Soul is the second registered shop and a different
Shopify palette: near-black, 3px corners, and
upper-case labels — the one entry so far that needs
the css hatch, because no token can say
text-transform. It also loads a different model, the
Sophia outdoor seater, which is pale teak with cream cushions and so
the better test of whether the viewer's white background is too
white.
The third shop is not in SITE_THEMES at all — it exists
only as a _sites entry in
products.local.json. Nothing about it was compiled into
the loader you are running, so purple buttons with 12px corners are
proof the manifest path is being read. That is the whole point:
onboarding a shop is an edit to a JSON file on the CDN, not a
rebuild and a redeploy to every shop already installed.
Two things to watch. The buttons appear with their colours
rather than recolouring, because the widget already withholds them
until the manifest lands. And the QR link still gains
&site=newshop.example.com — the AR page resolves
that key against the same manifest, so it lands branded too, one
fetch after it paints.
Open the 3D modal. The product holds still, then turns once with a tap icon riding it, and under the canvas: three background swatches (light selected), Share, and View in Your Space.
Content-Length shows megabytes instead.
model-viewer doesn't honour the preference for
auto-rotate either. With data-debug the
console says the preference was seen.
?p3dw-view=100996 (plus &p3dw-bg= when
the background isn't light). On a phone it opens the OS share
sheet instead. Over plain http:// both are refused and
the button says so — that is correct, not a bug.
destroyAll() removes every injected button and drops
every listener. Check the console for leaks afterwards.
console output appears here