Developer Documentation

Everything you need to integrate our 3D configurator

Quick Start Guide

1. Include the Script

Add our web component script to your HTML:

<!-- Add to your HTML <head> -->
<link rel="modulepreload" crossorigin="anonymous" 
      href="https://configuratorwebcomponent.netlify.app/assets/preload-helper.D3MTsGSl.js">
<script type="module" crossorigin="anonymous" 
        src="https://configuratorwebcomponent.netlify.app/assets/main.js"></script>

2. Add the Component

Place the configurator component where you want it to appear:

<product-configurator 
  data-layout="classic"
  data-mobile-layout="mobile-bottom-nav"
  data-theme="light"
  data-tenant-secret="your-tenant-secret"
></product-configurator>

3. Configure Your Options

Customize the configurator to match your needs using data attributes.

Component Attributes

data-layout

Controls the overall layout of the configurator

Type: string

Options: "classic", "modern", "minimal"

Default: "classic"

data-mobile-layout

Layout for mobile devices

Type: string

Options: "mobile-bottom-nav", "mobile-side-nav", "mobile-overlay"

Default: "mobile-bottom-nav"

data-theme

Color theme of the configurator

Type: string

Options: "light", "dark", "ocean", "sunset", "forest", "royal", "red"

Default: "light"

data-tenant-secret

Your unique API key (required)

Type: string (UUID)

Required: Yes

data-product-id

Specific product to display (optional)

Type: string

JavaScript API

Accessing the Configurator

Get a reference to the configurator element:

const configurator = document.querySelector('product-configurator');

Changing Theme Programmatically

// Change theme
configurator.setAttribute('data-theme', 'dark');

// Or use the method (if available)
configurator.setTheme('ocean');

Listening to Events

// Listen for configuration changes
configurator.addEventListener('configuration-changed', (event) => {
  console.log('New configuration:', event.detail);
});

// Listen for add to cart
configurator.addEventListener('add-to-cart', (event) => {
  console.log('Added to cart:', event.detail);
  // Integrate with your e-commerce system
});

Getting Current Configuration

// Get current product configuration
const config = configurator.getConfiguration();
console.log(config);

// Returns:
// {
//   productId: "abc123",
//   selectedOptions: {
//     color: "red",
//     size: "large",
//     material: "wood"
//   },
//   price: 299.99
// }

Framework Integration

React / Next.js

import { useEffect, useRef } from 'react';

function ProductPage() {
  const configuratorRef = useRef(null);

  useEffect(() => {
    const configurator = configuratorRef.current;
    
    const handleAddToCart = (event) => {
      console.log('Add to cart:', event.detail);
      // Your cart logic here
    };
    
    configurator?.addEventListener('add-to-cart', handleAddToCart);
    
    return () => {
      configurator?.removeEventListener('add-to-cart', handleAddToCart);
    };
  }, []);

  return (
    <product-configurator
      ref={configuratorRef}
      data-layout="classic"
      data-theme="light"
      data-tenant-secret="your-secret"
    />
  );
}

Vue.js / Nuxt

<template>
  <product-configurator
    ref="configurator"
    data-layout="classic"
    data-theme="light"
    data-tenant-secret="your-secret"
    @add-to-cart="handleAddToCart"
  />
</template>

<script setup>
import { ref, onMounted } from 'vue';

const configurator = ref(null);

const handleAddToCart = (event) => {
  console.log('Add to cart:', event.detail);
};

onMounted(() => {
  // Additional setup if needed
});
</script>

Vanilla JavaScript

<product-configurator
  id="myConfigurator"
  data-layout="classic"
  data-theme="light"
  data-tenant-secret="your-secret"
></product-configurator>

<script>
  const configurator = document.getElementById('myConfigurator');
  
  configurator.addEventListener('add-to-cart', (event) => {
    console.log('Add to cart:', event.detail);
    // Add to your shopping cart
  });
</script>

Need Help?

Our technical team is here to help with integration and customization.

Contact Support