Add full monorepo: virtual-banker, backend, frontend, docs, scripts, deployment
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
80
widget/public/widget.js
Normal file
80
widget/public/widget.js
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* Virtual Banker Widget Loader
|
||||
*
|
||||
* Usage:
|
||||
* <script src="path/to/widget.js"
|
||||
* data-tenant-id="your-tenant-id"
|
||||
* data-user-id="user-id"
|
||||
* data-auth-token="jwt-token"
|
||||
* data-api-url="https://api.example.com"
|
||||
* data-avatar-enabled="true"></script>
|
||||
* <div id="virtual-banker-widget"></div>
|
||||
*/
|
||||
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
// Get configuration from script tag
|
||||
const script = document.currentScript;
|
||||
const config = {
|
||||
tenantId: script.getAttribute('data-tenant-id') || 'default',
|
||||
userId: script.getAttribute('data-user-id') || undefined,
|
||||
authToken: script.getAttribute('data-auth-token') || undefined,
|
||||
apiUrl: script.getAttribute('data-api-url') || undefined,
|
||||
avatarEnabled: script.getAttribute('data-avatar-enabled') !== 'false',
|
||||
};
|
||||
|
||||
// Load React and ReactDOM (should be loaded separately or bundled)
|
||||
// For now, this is a placeholder - the actual widget will be loaded via the built bundle
|
||||
console.log('Virtual Banker Widget Loader initialized', config);
|
||||
|
||||
// Create container if it doesn't exist
|
||||
let container = document.getElementById('virtual-banker-widget');
|
||||
if (!container) {
|
||||
container = document.createElement('div');
|
||||
container.id = 'virtual-banker-widget';
|
||||
document.body.appendChild(container);
|
||||
}
|
||||
|
||||
// Store config for widget initialization
|
||||
container.dataset.tenantId = config.tenantId;
|
||||
if (config.userId) container.dataset.userId = config.userId;
|
||||
if (config.authToken) container.dataset.authToken = config.authToken;
|
||||
if (config.apiUrl) container.dataset.apiUrl = config.apiUrl;
|
||||
container.dataset.avatarEnabled = config.avatarEnabled.toString();
|
||||
|
||||
// Export API for programmatic control
|
||||
window.VirtualBankerWidgetAPI = {
|
||||
open: function() {
|
||||
const widget = document.getElementById('virtual-banker-widget');
|
||||
if (widget) {
|
||||
widget.style.display = 'block';
|
||||
}
|
||||
},
|
||||
close: function() {
|
||||
const widget = document.getElementById('virtual-banker-widget');
|
||||
if (widget) {
|
||||
widget.style.display = 'none';
|
||||
}
|
||||
},
|
||||
minimize: function() {
|
||||
const widget = document.getElementById('virtual-banker-widget');
|
||||
if (widget) {
|
||||
widget.classList.add('minimized');
|
||||
}
|
||||
},
|
||||
setContext: function(context) {
|
||||
const widget = document.getElementById('virtual-banker-widget');
|
||||
if (widget) {
|
||||
widget.dataset.context = JSON.stringify(context);
|
||||
}
|
||||
},
|
||||
setAuthToken: function(token) {
|
||||
const widget = document.getElementById('virtual-banker-widget');
|
||||
if (widget) {
|
||||
widget.dataset.authToken = token;
|
||||
}
|
||||
},
|
||||
};
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user