🤖 AI HTML Components
This comprehensive guide explains how to create Myop 🤖 AI HTML components with proper data loading, mock data mechanisms, and integration patterns with host applications.
For the best experience building AI HTML components, we recommend using the Myop MCP Server. The MCP integration:
- Always up-to-date — Automatically fetches the latest component guide and best practices
- Seamless uploads — Build and deploy components directly from your AI assistant
- Iterative development — Quickly update and redeploy components with simple commands
Set up MCP once, and your AI assistant will always have access to the current Myop component patterns.
For local development with file watching and hot module replacement, use the Myop CLI:
npm install -g @myop/cli
myop dev
The CLI provides a development server at http://localhost:9292 with automatic rebuilding, HMR support, and a visual dashboard.
Overview
Myop HTML components are self-contained UI units that communicate with host applications through a well-defined public API. They follow a specific pattern that enables:
- Dynamic data loading from host applications
- Preview mode with mock data for development
- Bi-directional communication between component and host
- Encapsulation of all implementation details
Quick Start
A minimal Myop component has this structure:
<!DOCTYPE html>
<html>
<head>
<style>
#loader-container { display: flex; /* shown by default */ }
#app-root { opacity: 0; /* hidden by default */ }
</style>
</head>
<body>
<div id="loader-container">
<div class="loader-spinner"></div>
</div>
<div id="app-root">
<!-- Your component UI -->
</div>
<script>
(function() {
// Private implementation
function hideLoader() {
document.getElementById('loader-container').style.display = 'none';
document.getElementById('app-root').style.opacity = '1';
}
function initializeComponent(data) {
// Render your UI with the data
hideLoader();
}
// Public API
window.myop_init_interface = function(data) {
if (data) initializeComponent(data);
};
window.myop_cta_handler = function(action_id, payload) {
console.log('Action:', action_id, payload);
};
})();
</script>
<!-- Mock data for preview -->
<script id="myop_preview">
setTimeout(() => {
window.myop_init_interface({ items: [] });
});
</script>
</body>
</html>
Guide Sections
Component Structure
Learn about the three main parts of a Myop component: HTML structure, loader UI, and encapsulated JavaScript.
Data Loading
Understand the data loading mechanism and lifecycle from initial loader state to fully rendered component.
Mock Data
Set up preview mock data for development and testing without a host application.
Public API
Reference for the two global functions: myop_init_interface and myop_cta_handler.
Host Integration
Learn how to integrate Myop components with React, Vue, Angular, or vanilla JavaScript host applications.
Best Practices
Guidelines for building maintainable, performant, and accessible Myop components.
Key Concepts
Separation of Concerns
Myop components follow a clear separation of concerns:
| Responsibility | Component | Host Application |
|---|---|---|
| UI Rendering | ✓ | |
| User Interactions | ✓ | |
| Data Fetching | ✓ | |
| Navigation | ✓ | |
| Business Logic | ✓ |
Communication Flow
HOST APPLICATION (React/Vue/Angular)
1. Renders Myop component
2. onReady callback fires
3. Sets up myop_cta_handler
4. Fetches data from API
5. Calls myop_init_interface(data)
↓
MYOP HTML COMPONENT
window.myop_init_interface(data):
1. Stores data in private state
2. Transforms data (parse dates, etc.)
3. Renders component UI
4. Hides loader, shows app
User Interaction:
→ Calls window.myop_cta_handler('action', payload)
↓
HOST APPLICATION
myop_cta_handler receives event:
1. Parses action_id
2. Handles action (navigate, open modal, etc.)
Next Steps
- New to Myop? Start with Component Structure
- Building a component? See Data Loading and Public API
- Integrating with your app? Check Host Integration
- Need optimization tips? Review Best Practices