@gymmymac/bob-widget 3.0.4 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .bob-widget-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:16px;line-height:1.5;color:#1a1a1a;background:transparent;isolation:isolate;contain:layout style;box-sizing:border-box;--border: transparent !important;--border-border: transparent !important}.bob-widget-root *,.bob-widget-root *:before,.bob-widget-root *:after{box-sizing:border-box}.bob-widget-root button,.bob-widget-root [role=button]{min-height:unset!important;min-width:unset!important}.bob-widget-root input,.bob-widget-root textarea{font-size:16px!important}.bob-widget-root *:focus-visible{outline:2px solid #2563eb!important;outline-offset:2px!important}.bob-widget-root a{color:inherit;text-decoration:none}.bob-widget-root svg{display:inline-block;vertical-align:middle}.bob-widget-root img{max-width:100%;height:auto;display:block}.bob-widget-root ul,.bob-widget-root ol{list-style:none;margin:0;padding:0}.bob-widget-root h1,.bob-widget-root h2,.bob-widget-root h3,.bob-widget-root h4,.bob-widget-root h5,.bob-widget-root h6{font-size:inherit;font-weight:inherit;margin:0}.bob-widget-root p{margin:0}.bob-widget-root .bob-flex{display:flex}.bob-widget-root .bob-flex-col{flex-direction:column}.bob-widget-root .bob-items-center{align-items:center}.bob-widget-root .bob-justify-center{justify-content:center}.bob-widget-root .bob-gap-2{gap:.5rem}.bob-widget-root .bob-gap-3{gap:.75rem}@keyframes ptt-pulse{0%,to{box-shadow:0 0 #0066cc80}50%{box-shadow:0 0 0 16px #06c0}}@keyframes ptt-wave{0%{transform:translate(-50%,-50%) scale(1);opacity:.6}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes ptt-dot{0%{opacity:.4;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.bob-widget-root .glass-card{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease-out,border-color .3s ease}.bob-widget-root .glass-card:active{transform:scale(.98) translateY(0)!important}.bob-widget-root .glass-button{transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease-out,background .2s ease}.bob-widget-root .glass-button:active{transform:scale(.95) translateY(0)!important}.bob-widget-root .product-scroll::-webkit-scrollbar{display:none}.bob-widget-root .product-scroll{scrollbar-width:none;-ms-overflow-style:none}.bob-widget-root .glass-scroll::-webkit-scrollbar{display:none}.bob-widget-root .glass-scroll{scrollbar-width:none;-ms-overflow-style:none}.bob-widget-root .high-contrast-input::placeholder{color:#ffffffb3}.bob-widget-root .high-contrast-input:focus::placeholder{color:#ffffff80}.bob-widget-root input[type=text],.bob-widget-root input[type=search],.bob-widget-root textarea{background:#003366d9!important;color:#fff!important;border:2px solid rgba(255,255,255,.35)!important;border-radius:12px!important;padding:12px 16px!important;font-size:16px!important;line-height:1.5!important;outline:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.bob-widget-root input[type=text]:focus,.bob-widget-root input[type=search]:focus,.bob-widget-root textarea:focus{border-color:#fff9!important;box-shadow:0 0 0 3px #0066cc4d!important}.bob-widget-root button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background:transparent;border:none;cursor:pointer;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-size:inherit;line-height:inherit;padding:0;margin:0}.bob-widget-root .bob-chat-drawer,.bob-widget-root .bob-product-column{display:flex!important;flex-direction:column!important}.bob-widget-root{position:relative!important;z-index:var(--bob-z-base, 50)!important}.bob-widget-root *{transform-style:flat}.bob-widget-root,.bob-widget-root *{max-width:none}
1
+ .bob-widget-root{position:relative;display:flex;flex-direction:column;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:16px;line-height:1.5;color:#1a1a1a;background:transparent;isolation:isolate;contain:layout style;box-sizing:border-box;--border: transparent !important;--border-border: transparent !important;--bob-blur-intensity: 8px;--bob-overlay-opacity: .15;--bob-z-base: 50;--bob-primary-color: #0066cc;--bob-accent-color: #ff8c00}.bob-widget-root *,.bob-widget-root *:before,.bob-widget-root *:after{box-sizing:border-box}.bob-widget-root button,.bob-widget-root [role=button]{min-height:unset!important;min-width:unset!important}.bob-widget-root input,.bob-widget-root textarea{font-size:16px!important}.bob-widget-root *:focus-visible{outline:2px solid #2563eb!important;outline-offset:2px!important}.bob-widget-root a{color:inherit;text-decoration:none}.bob-widget-root svg{display:inline-block;vertical-align:middle}.bob-widget-root img{max-width:100%;height:auto;display:block}.bob-widget-root ul,.bob-widget-root ol{list-style:none;margin:0;padding:0}.bob-widget-root h1,.bob-widget-root h2,.bob-widget-root h3,.bob-widget-root h4,.bob-widget-root h5,.bob-widget-root h6{font-size:inherit;font-weight:inherit;margin:0}.bob-widget-root p{margin:0}.bob-widget-root .bob-flex{display:flex}.bob-widget-root .bob-flex-col{flex-direction:column}.bob-widget-root .bob-items-center{align-items:center}.bob-widget-root .bob-justify-center{justify-content:center}.bob-widget-root .bob-gap-2{gap:.5rem}.bob-widget-root .bob-gap-3{gap:.75rem}@keyframes ptt-pulse{0%,to{box-shadow:0 0 #0066cc80}50%{box-shadow:0 0 0 16px #06c0}}@keyframes ptt-wave{0%{transform:translate(-50%,-50%) scale(1);opacity:.6}to{transform:translate(-50%,-50%) scale(2);opacity:0}}@keyframes ptt-dot{0%{opacity:.4;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.bob-widget-root .glass-card{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease-out,border-color .3s ease}.bob-widget-root .glass-card:active{transform:scale(.98) translateY(0)!important}.bob-widget-root .glass-button{transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease-out,background .2s ease}.bob-widget-root .glass-button:active{transform:scale(.95) translateY(0)!important}.bob-widget-root .product-scroll::-webkit-scrollbar{display:none}.bob-widget-root .product-scroll{scrollbar-width:none;-ms-overflow-style:none}.bob-widget-root .glass-scroll::-webkit-scrollbar{display:none}.bob-widget-root .glass-scroll{scrollbar-width:none;-ms-overflow-style:none}.bob-widget-root .high-contrast-input::placeholder{color:#ffffffb3}.bob-widget-root .high-contrast-input:focus::placeholder{color:#ffffff80}.bob-widget-root input[type=text],.bob-widget-root input[type=search],.bob-widget-root textarea{background:#003366d9!important;color:#fff!important;border:2px solid rgba(255,255,255,.35)!important;border-radius:12px!important;padding:12px 16px!important;font-size:16px!important;line-height:1.5!important;outline:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}.bob-widget-root input[type=text]:focus,.bob-widget-root input[type=search]:focus,.bob-widget-root textarea:focus{border-color:#fff9!important;box-shadow:0 0 0 3px #0066cc4d!important}.bob-widget-root button{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background:transparent;border:none;cursor:pointer;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif!important;font-size:inherit;line-height:inherit;padding:0;margin:0}.bob-widget-root .bob-chat-drawer,.bob-widget-root .bob-product-column{display:flex!important;flex-direction:column!important}.bob-widget-root{position:relative!important;z-index:var(--bob-z-base, 50)!important}.bob-widget-root *{transform-style:flat}.bob-widget-root,.bob-widget-root *{max-width:none}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Partner configuration types for Bob Standalone v3.1.0
3
+ * Partners auto-load config from database - minimal host-side setup required
4
+ */
5
+ /**
6
+ * Feature flags for partner-specific behavior
7
+ */
8
+ export interface PartnerFeatureFlags {
9
+ /** Show service package bundles on product shelf */
10
+ showServicePackages?: boolean;
11
+ /** Enable text-to-speech for Bob responses */
12
+ enableTTS?: boolean;
13
+ /** Enable speech recognition for voice input */
14
+ enableSpeechRecognition?: boolean;
15
+ /** Show debug overlay with diagnostic info */
16
+ showDebugOverlay?: boolean;
17
+ }
18
+ /**
19
+ * Partner configuration stored in bob_partners table
20
+ */
21
+ export interface PartnerConfig {
22
+ id: string;
23
+ partner_code: string;
24
+ display_name: string;
25
+ api_base_url: string;
26
+ api_key_secret_name?: string;
27
+ bob_supabase_url: string;
28
+ bob_supabase_key: string;
29
+ default_bottom_offset: number;
30
+ default_z_index_base: number;
31
+ backdrop_blur_intensity: number;
32
+ backdrop_overlay_opacity: number;
33
+ allowed_origins: string[];
34
+ feature_flags: PartnerFeatureFlags;
35
+ is_active: boolean;
36
+ created_at: string;
37
+ updated_at: string;
38
+ }
39
+ /**
40
+ * Essential callbacks for v3.1.0 simplified interface
41
+ * Only what the host MUST handle - everything else is internalized
42
+ */
43
+ export interface EssentialCallbacks {
44
+ /** Called when user wants to add item to cart - REQUIRED for e-commerce */
45
+ onAddToCart?: (item: {
46
+ product_id: string;
47
+ product_name: string;
48
+ quantity: number;
49
+ unit_price: number;
50
+ sku?: string;
51
+ brand?: string;
52
+ image_url?: string;
53
+ vehicle_id?: string;
54
+ }) => void;
55
+ /** Called for SPA navigation within host site */
56
+ onNavigate?: (url: string) => void;
57
+ /** Called when checkout is ready */
58
+ onCheckout?: (checkoutUrl: string) => void;
59
+ /** Called on error (optional - Bob shows toast by default) */
60
+ onError?: (error: Error) => void;
61
+ }
62
+ /**
63
+ * Simplified props for v3.1.0 partner integration
64
+ */
65
+ export interface StandaloneWidgetProps {
66
+ /** Partner code - loads all config from database */
67
+ partner: string;
68
+ /** Optional session token for pre-authenticated sessions */
69
+ sessionToken?: string;
70
+ /** Override bottom offset from database default */
71
+ bottomOffset?: number;
72
+ /** Override z-index base from database default */
73
+ zIndexBase?: number;
74
+ /** Override backdrop blur intensity (0-20) */
75
+ backdropBlurIntensity?: number;
76
+ /** Override backdrop overlay opacity (0-1) */
77
+ backdropOverlayOpacity?: number;
78
+ /** Essential callbacks - only what host MUST handle */
79
+ onAddToCart?: EssentialCallbacks['onAddToCart'];
80
+ onNavigate?: EssentialCallbacks['onNavigate'];
81
+ onCheckout?: EssentialCallbacks['onCheckout'];
82
+ onError?: EssentialCallbacks['onError'];
83
+ /** Enable debug mode overlay */
84
+ debug?: boolean;
85
+ /** Additional CSS class for container */
86
+ className?: string;
87
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gymmymac/bob-widget",
3
- "version": "3.0.4",
3
+ "version": "3.1.0",
4
4
  "description": "Bob - AI-powered automotive parts assistant widget with multi-tenant support, RAF animations, swipeable interactions, and GA4 analytics",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",