Integration Examples

Real-world code examples for integrating Plaros embeds into popular frameworks and platforms.

React Integration

Basic React Component

import React, { useMemo } from 'react';

const PlarosEmbed = ({ 
  tenantSlug, 
  zonePath, 
  playbookId, 
  userId, 
  customColors = {},
  themeMode,
  size = 'medium',
  className,
  onLoad 
}) => {
  const embedUrl = useMemo(() => {
    const url = new URL(`https://play.plaros.com/v1/embed/${tenantSlug}/playbooks`);
    
    // Required parameter
    url.searchParams.set('zonePath', zonePath);
    
    // Optional parameters
    if (playbookId) {
      url.searchParams.set('playbookId', playbookId);
    }
    
    if (userId) {
      url.searchParams.set('userId', userId);
    }
    
    if (customColors.primary) {
      url.searchParams.set('primaryColor', customColors.primary.replace('#', ''));
    }
    
    if (customColors.secondary) {
      url.searchParams.set('secondaryColor', customColors.secondary.replace('#', ''));
    }
    
    if (themeMode) {
      url.searchParams.set('themeMode', themeMode);
    }
    
    return url.toString();
  }, [tenantSlug, zonePath, playbookId, userId, customColors, themeMode]);

  const sizeConfig = {
    small: { maxWidth: '400px', aspectRatio: '177.78%' },
    medium: { maxWidth: '600px', aspectRatio: '133.33%' },
    large: { maxWidth: '800px', aspectRatio: '75%' }
  };

  const config = sizeConfig[size] || sizeConfig.medium;

  return (
    <div 
      className={`playbook-embed-container ${className || ''}`} 
      style={{
        position: 'relative',
        width: '100%',
        maxWidth: config.maxWidth,
        margin: '0 auto'
      }}
    >
      <div style={{
        position: 'relative',
        paddingBottom: config.aspectRatio,
        height: 0,
        overflow: 'hidden'
      }}>
        <iframe
          src={embedUrl}
          style={{
            position: 'absolute',
            top: 0,
            left: 0,
            width: '100%',
            height: '100%',
            border: 0,
            borderRadius: '8px'
          }}
          allow="fullscreen"
          title="Interactive Playbook"
          onLoad={onLoad}
        />
      </div>
    </div>
  );
};

export default PlarosEmbed;

React with Hooks and Context

Vue.js Integration

Vue 3 Composition API

WordPress Integration

Plugin Development

WordPress CSS File

Learning Management System (LMS)

Moodle Integration

Canvas LTI Integration

Next Steps

  • Learn about Custom Theming to style your embeds

  • Check Configuration Options for parameter details

  • See Troubleshooting for common integration issues