unified-video-framework 1.4.124 → 1.4.126

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.
@@ -2431,13 +2431,14 @@ export class WebPlayer extends BasePlayer {
2431
2431
  /* Framework Branding */
2432
2432
  .uvf-framework-branding {
2433
2433
  position: absolute;
2434
- bottom: 25px;
2435
- right: 25px;
2436
- z-index: 8;
2434
+ bottom: 140px;
2435
+ right: 15px;
2436
+ z-index: 10;
2437
2437
  opacity: 0;
2438
2438
  transform: translateY(10px);
2439
2439
  transition: all 0.3s ease;
2440
- pointer-events: none;
2440
+ pointer-events: auto;
2441
+ cursor: pointer;
2441
2442
  }
2442
2443
 
2443
2444
  .uvf-player-wrapper:hover .uvf-framework-branding,
@@ -2447,42 +2448,104 @@ export class WebPlayer extends BasePlayer {
2447
2448
  }
2448
2449
 
2449
2450
  .uvf-logo-svg {
2450
- height: 20px;
2451
+ height: 18px;
2451
2452
  width: auto;
2452
- opacity: 0.8;
2453
- filter: drop-shadow(0 2px 4px rgba(0,0,0,0.3));
2454
- transition: opacity 0.2s ease;
2453
+ opacity: 0.85;
2454
+ filter: drop-shadow(0 1px 3px rgba(0,0,0,0.4));
2455
+ transition: all 0.2s ease;
2455
2456
  }
2456
2457
 
2457
2458
  .uvf-framework-branding:hover .uvf-logo-svg {
2458
2459
  opacity: 1;
2460
+ transform: scale(1.05);
2459
2461
  }
2460
2462
 
2461
- @media (max-width: 480px) {
2462
- .uvf-framework-branding {
2463
- display: none;
2464
- }
2463
+ .uvf-framework-branding:active .uvf-logo-svg {
2464
+ transform: scale(0.95);
2465
+ }
2466
+
2467
+ /* Above seekbar section with time and branding */
2468
+ .uvf-above-seekbar-section {
2469
+ display: flex;
2470
+ align-items: center;
2471
+ justify-content: space-between;
2472
+ margin-bottom: 8px;
2473
+ opacity: 0;
2474
+ transform: translateY(10px);
2475
+ transition: all 0.3s ease;
2476
+ }
2477
+
2478
+ .uvf-player-wrapper:hover .uvf-above-seekbar-section,
2479
+ .uvf-player-wrapper.controls-visible .uvf-above-seekbar-section {
2480
+ opacity: 1;
2481
+ transform: translateY(0);
2482
+ }
2483
+
2484
+ .uvf-time-display.uvf-above-seekbar {
2485
+ position: static;
2486
+ font-size: 13px;
2487
+ font-weight: 500;
2488
+ color: var(--uvf-text-primary);
2489
+ text-shadow: 0 1px 3px rgba(0,0,0,0.7);
2490
+ background: rgba(0,0,0,0.3);
2491
+ padding: 4px 8px;
2492
+ border-radius: 12px;
2493
+ backdrop-filter: blur(4px);
2494
+ border: 1px solid rgba(255,255,255,0.1);
2495
+ }
2496
+
2497
+ .uvf-framework-branding {
2498
+ position: static;
2499
+ bottom: unset;
2500
+ right: unset;
2501
+ opacity: 1;
2502
+ transform: none;
2503
+ margin: 0;
2465
2504
  }
2466
2505
 
2506
+ /* Show on mobile - positioned above seekbar */
2467
2507
  @media (max-width: 768px) {
2468
- .uvf-framework-branding {
2469
- bottom: 20px;
2470
- right: 20px;
2508
+ .uvf-above-seekbar-section {
2509
+ margin-bottom: 6px;
2510
+ }
2511
+
2512
+ .uvf-time-display.uvf-above-seekbar {
2513
+ font-size: 12px;
2514
+ padding: 3px 6px;
2471
2515
  }
2472
2516
 
2473
2517
  .uvf-logo-svg {
2474
- height: 18px;
2518
+ height: 16px;
2519
+ }
2520
+ }
2521
+
2522
+ @media (max-width: 480px) {
2523
+ .uvf-above-seekbar-section {
2524
+ margin-bottom: 5px;
2525
+ }
2526
+
2527
+ .uvf-time-display.uvf-above-seekbar {
2528
+ font-size: 11px;
2529
+ padding: 2px 5px;
2530
+ }
2531
+
2532
+ .uvf-logo-svg {
2533
+ height: 14px;
2475
2534
  }
2476
2535
  }
2477
2536
 
2478
2537
  @media (max-height: 400px) {
2479
- .uvf-framework-branding {
2480
- bottom: 15px;
2481
- right: 15px;
2538
+ .uvf-above-seekbar-section {
2539
+ margin-bottom: 4px;
2540
+ }
2541
+
2542
+ .uvf-time-display.uvf-above-seekbar {
2543
+ font-size: 11px;
2544
+ padding: 2px 4px;
2482
2545
  }
2483
2546
 
2484
2547
  .uvf-logo-svg {
2485
- height: 16px;
2548
+ height: 12px;
2486
2549
  }
2487
2550
  }
2488
2551
  height: 16px;
@@ -3120,7 +3183,7 @@ export class WebPlayer extends BasePlayer {
3120
3183
  order: 2;
3121
3184
  }
3122
3185
 
3123
- .uvf-controls-row .uvf-time-display {
3186
+ .uvf-controls-row .uvf-time-display:not(.uvf-above-seekbar) {
3124
3187
  order: 3;
3125
3188
  margin-left: auto;
3126
3189
  margin-right: 8px;
@@ -3175,7 +3238,7 @@ export class WebPlayer extends BasePlayer {
3175
3238
  }
3176
3239
 
3177
3240
  /* Mobile time display - compact but readable */
3178
- .uvf-time-display {
3241
+ .uvf-time-display:not(.uvf-above-seekbar) {
3179
3242
  font-size: 12px;
3180
3243
  font-weight: 600;
3181
3244
  min-width: 85px;
@@ -3187,6 +3250,18 @@ export class WebPlayer extends BasePlayer {
3187
3250
  flex-shrink: 0;
3188
3251
  }
3189
3252
 
3253
+ /* Above-seekbar time display for mobile */
3254
+ .uvf-time-display.uvf-above-seekbar {
3255
+ font-size: 12px !important;
3256
+ font-weight: 500 !important;
3257
+ padding: 3px 6px !important;
3258
+ background: rgba(0,0,0,0.4) !important;
3259
+ border-radius: 10px !important;
3260
+ text-shadow: 0 1px 2px rgba(0,0,0,0.8) !important;
3261
+ backdrop-filter: blur(4px) !important;
3262
+ border: 1px solid rgba(255,255,255,0.1) !important;
3263
+ }
3264
+
3190
3265
  /* Simplified volume control for mobile */
3191
3266
  .uvf-volume-control {
3192
3267
  order: 3;
@@ -4178,39 +4253,60 @@ export class WebPlayer extends BasePlayer {
4178
4253
  /**
4179
4254
  * Creates framework branding logo
4180
4255
  */
4181
- private createFrameworkBranding(container: HTMLElement): void {
4182
- // Framework branding container
4183
- const brandingContainer = document.createElement('div');
4184
- brandingContainer.className = 'uvf-framework-branding';
4185
-
4186
- // Load and embed the SVG logo
4187
- const logoSvg = `
4188
- <svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" id="Layer_1" viewBox="0 0 180 29" class="uvf-logo-svg">
4189
- <defs>
4190
- <style>.cls-1{fill:#0d5ef8;}.cls-2{fill:#ff0366;opacity:0.94;}.cls-3{fill:#fff;}</style>
4191
- </defs>
4192
- <title>flicknexs</title>
4193
- <path class="cls-1" d="M45.93,1.53q-.87.15-3.18.48l-3.59.51c-1.26.16-2.42.3-3.51.42s-2.17.19-3.26.25q.7,4,1.17,10.68T34,25.67a22.58,22.58,0,0,0,2.73-.14,19.27,19.27,0,0,0,2.47-.45c.09-1.29.16-2.69.22-4.22s.1-3.16.14-4.9c.75-.09,1.54-.16,2.37-.2s1.76,0,2.77,0c0-1,0-1.89-.1-2.57a12,12,0,0,0-.35-2,20.14,20.14,0,0,0-2.34.13,18.77,18.77,0,0,0-2.38.4c0-.78,0-1.57,0-2.37s-.06-1.59-.1-2.37c.51,0,1.3-.11,2.39-.23l4.1-.42A10.41,10.41,0,0,0,46.13,5,8.75,8.75,0,0,0,46.21,4a10.85,10.85,0,0,0-.08-1.34,6.31,6.31,0,0,0-.2-1.08Z"/>
4194
- <path class="cls-1" d="M61.11,21a20.41,20.41,0,0,0-3.07.25,26,26,0,0,0-3.25.7c-.14-.88-.25-1.94-.32-3.17s-.1-3.13-.1-5.67c0-1.76.05-3.42.14-5s.22-2.81.37-3.74a6.81,6.81,0,0,0-.74-.07l-.72,0a19.18,19.18,0,0,0-2.49.17A20.39,20.39,0,0,0,48.39,5c0,2.84.18,6.4.52,10.68s.75,7.81,1.2,10.6q3.78-.54,6.33-.73c1.69-.14,3.46-.2,5.32-.2a14.9,14.9,0,0,0-.21-2.26A15.21,15.21,0,0,0,61.11,21Z"/>
4195
- <path class="cls-1" d="M69.2,4.25A10.1,10.1,0,0,0,67.86,4a11.09,11.09,0,0,0-1.36-.07,7.12,7.12,0,0,0-1.92.25,5.51,5.51,0,0,0-1.59.7q.51,3.83.76,8.62T64,24.16A20.88,20.88,0,0,0,66.51,24a14.38,14.38,0,0,0,2.15-.39q.28-3,.45-7.12t.17-8q0-1.2,0-2.28c0-.72,0-1.37,0-2Z"/>
4196
- <path class="cls-1" d="M80.84,7.18a1.42,1.42,0,0,1,1.31,1,6.72,6.72,0,0,1,.46,2.8,15.48,15.48,0,0,0,2.7-.19,12.09,12.09,0,0,0,2.55-.84A7,7,0,0,0,86,5.42,5.65,5.65,0,0,0,81.8,3.81a8.68,8.68,0,0,0-7.07,3.51,13.28,13.28,0,0,0-2.81,8.61,8.82,8.82,0,0,0,2,6.15,7,7,0,0,0,5.45,2.16,8.74,8.74,0,0,0,5.8-1.78,6.86,6.86,0,0,0,2.34-5,4.63,4.63,0,0,0-1.84-.66,8.79,8.79,0,0,0-2.43-.13,4.83,4.83,0,0,1-.39,3,2.1,2.1,0,0,1-2,1.06,2.23,2.23,0,0,1-2-1.58,11.41,11.41,0,0,1-.72-4.56,15.42,15.42,0,0,1,.79-5.22c.52-1.44,1.18-2.16,2-2.16Z"/>
4197
- <path class="cls-1" d="M99.82,14.22a24.24,24.24,0,0,0,3-3.4,36.6,36.6,0,0,0,2.75-4.29,11.67,11.67,0,0,0-2.17-2,8.72,8.72,0,0,0-2.35-1.16,51.71,51.71,0,0,1-2.76,5.54,24.14,24.14,0,0,1-2.79,3.84c.07-1.54.19-3.05.36-4.54s.38-2.93.65-4.34a11.73,11.73,0,0,0-1.29-.25,12.48,12.48,0,0,0-1.44-.08,8.38,8.38,0,0,0-2.07.25,5.37,5.37,0,0,0-1.69.7c-.07,1.12-.13,2.22-.17,3.29s0,2.1,0,3.11q0,3.89.32,7.57a67.32,67.32,0,0,0,1,7,22.86,22.86,0,0,0,2.71-.17,13.09,13.09,0,0,0,2.23-.39q-.25-1.84-.39-3.66c-.1-1.21-.15-2.39-.17-3.55a.77.77,0,0,0,.15-.1l.16-.1a35.18,35.18,0,0,1,3.53,4.28,39,39,0,0,1,2.9,5A11.7,11.7,0,0,0,105,25.1a9.65,9.65,0,0,0,2.08-2.23A47.65,47.65,0,0,0,103.63,18a33.51,33.51,0,0,0-3.81-3.82Z"/>
4198
- <path class="cls-1" d="M124.86,1.87a17.07,17.07,0,0,0-2.83.24,22.53,22.53,0,0,0-2.9.69c.17,1.1.3,2.53.4,4.28s.14,3.74.14,6a50.57,50.57,0,0,0-2.37-5,55,55,0,0,0-3-4.79,14.37,14.37,0,0,0-3,.41,11.7,11.7,0,0,0-2.53.91l-.22.11a3,3,0,0,0-.31.2q0,3.48.27,8.49t.8,11.13a19.17,19.17,0,0,0,2.49-.17A12.81,12.81,0,0,0,114,24V14.4c0-.92,0-1.77,0-2.54a49.47,49.47,0,0,1,2.4,4.34q1.16,2.37,3,6.72c.71,0,1.44-.1,2.2-.18s1.72-.22,2.88-.41c.17-2.32.3-4.74.41-7.25s.15-4.93.15-7.23c0-.94,0-1.9,0-2.89s0-2-.11-3.09Z"/>
4199
- <path class="cls-1" d="M142.27,19.19c-.89.17-2.19.36-3.93.57s-2.89.33-3.43.33c-.07-.73-.13-1.5-.17-2.3s-.06-1.63-.08-2.47q1.49-.18,3.06-.27c1.05-.07,2.1-.1,3.17-.1,0-.93,0-1.75-.11-2.44a18.5,18.5,0,0,0-.34-2,21.7,21.7,0,0,0-2.92.19,19.5,19.5,0,0,0-2.86.62c0-1.07,0-1.87.05-2.4s0-1,.09-1.42c1.21-.07,2.39-.13,3.51-.16s2.2-.06,3.25-.06A20.56,20.56,0,0,0,142,4.83a19.15,19.15,0,0,0,.13-2.2,55.58,55.58,0,0,0-6.25.35c-2.12.23-4.63.62-7.51,1.16q.06,4,.63,9.91c.39,4,.81,7.44,1.28,10.42,2,0,4.41-.12,7.34-.34a37,37,0,0,0,5.21-.59,19.88,19.88,0,0,0-.16-2.43,8.59,8.59,0,0,0-.37-1.92Z"/>
4200
- <path class="cls-1" d="M157,11.89q1.72-2.16,2.95-3.82c.83-1.1,1.56-2.16,2.22-3.17A9.76,9.76,0,0,0,160.4,3a9.62,9.62,0,0,0-2.13-1.4c-.53,1-1.09,1.95-1.69,2.94s-1.27,2-2,3.15c-.71-1.14-1.44-2.28-2.19-3.4S150.85,2.08,150,1a15.86,15.86,0,0,0-2.71,1.35,19.56,19.56,0,0,0-2.57,1.88Q146.37,6,147.85,8c1,1.32,2,2.73,3,4.25-.58.79-1.19,1.58-1.83,2.39s-2.26,2.78-4.88,5.95a10.68,10.68,0,0,0,1.35,1.5A10.94,10.94,0,0,0,147,23.32q1.74-1.77,3.21-3.42c1-1.09,2-2.28,3.05-3.57.56,1,1.16,2.12,1.8,3.35s1.49,2.94,2.58,5.15A25.27,25.27,0,0,0,160,23.46a8.81,8.81,0,0,0,1.61-1.32c-.69-1.82-1.42-3.57-2.18-5.27s-1.6-3.35-2.48-5Z"/>
4201
- <path class="cls-1" d="M175.73,13.66a8.41,8.41,0,0,0-1.1-1.26,20.35,20.35,0,0,0-2-1.66,11.73,11.73,0,0,1-2.47-2.27,3.19,3.19,0,0,1-.56-1.77,1.53,1.53,0,0,1,.38-1.08,1.33,1.33,0,0,1,1-.41,1.93,1.93,0,0,1,1.63.76,5.25,5.25,0,0,1,.84,2.5a14.43,14.43,0,0,0,2.73-.41A6.64,6.64,0,0,0,178,7.23a6.74,6.74,0,0,0-2.32-4.11A7.23,7.23,0,0,0,171,1.73a7.69,7.69,0,0,0-5.27,1.77,5.83,5.83,0,0,0-2,4.57a6.91,6.91,0,0,0,.34,2.21a7.42,7.42,0,0,0,1,2,10.78,10.78,0,0,0,1.15,1.26,26.14,26.14,0,0,0,2.07,1.71a12.65,12.65,0,0,1,2.43,2.2,2.71,2.71,0,0,1,.55,1.59,2.06,2.06,0,0,1-.53,1.5,2,2,0,0,1-1.52.55,2.42,2.42,0,0,1-2.17-1.31,6.43,6.43,0,0,1-.81-3.43a8.78,8.78,0,0,0-2.12.32,10.48,10.48,0,0,0-2.17.77a6.45,6.45,0,0,0,2.23,4.9,7.93,7.93,0,0,0,5.57,2.06,7.31,7.31,0,0,0,5.11-1.89A6.18,6.18,0,0,0,177,17.7a7.12,7.12,0,0,0-.31-2.15,6.71,6.71,0,0,0-1-1.89Z"/>
4202
- <path class="cls-2" d="M24.28,12a1.43,1.43,0,0,1,.44,2.44l-8.11,6.84-8.1,6.85a1.43,1.43,0,0,1-2.33-.85L4.3,16.84,2.43,6.4A1.43,1.43,0,0,1,4.32,4.8l10,3.59Z"/>
4203
- <path class="cls-1" d="M29.4,13.7a1.62,1.62,0,0,1,0,2.81L19,22.5l-10.39,6a1.62,1.62,0,0,1-2.43-1.4v-24a1.62,1.62,0,0,1,2.43-1.4L19,7.7Z"/>
4204
- <path class="cls-3" d="M17.5,8.84l-2.33.74c-1.12.36-2,.63-2.63.82-.92.28-1.78.52-2.58.74s-1.61.41-2.41.59C8.22,13.68,9,16.3,9.72,19.6s1.37,6.23,1.79,8.8a18.88,18.88,0,0,0,2-.44,14.36,14.36,0,0,0,1.8-.64c-.08-1-.2-2-.34-3.2s-.31-2.38-.5-3.69c.55-.16,1.14-.3,1.76-.43s1.31-.26,2.07-.38q-.2-1.15-.39-1.92a8.8,8.8,0,0,0-.5-1.42,16.83,16.83,0,0,0-1.74.38,14.8,14.8,0,0,0-1.73.6c-.1-.59-.2-1.18-.32-1.78s-.24-1.18-.37-1.76L15,13.26l3-.82a8.59,8.59,0,0,0,0-1,6.88,6.88,0,0,0-.08-.83q-.09-.54-.21-1a6.18,6.18,0,0,0-.29-.78Z"/>
4205
- </svg>
4206
- `;
4207
-
4208
- brandingContainer.innerHTML = logoSvg;
4209
-
4210
- container.appendChild(brandingContainer);
4211
-
4212
- this.debugLog('Framework branding added');
4213
- }
4256
+ private createFrameworkBranding(container: HTMLElement): void {
4257
+ const brandingContainer = document.createElement('div');
4258
+ brandingContainer.className = 'uvf-framework-branding';
4259
+ brandingContainer.setAttribute('title', 'Powered by flicknexs');
4260
+
4261
+ const logoSvg = `
4262
+ <svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" id="Layer_1" viewBox="0 0 180 29" class="uvf-logo-svg">
4263
+ <defs>
4264
+ <style>.cls-1{fill:#0d5ef8;}.cls-2{fill:#ff0366;opacity:0.94;}.cls-3{fill:#fff;}</style>
4265
+ </defs>
4266
+ <title>flicknexs</title>
4267
+ <path class="cls-1" d="M45.93,1.53q-.87.15-3.18.48l-3.59.51c-1.26.16-2.42.3-3.51.42s-2.17.19-3.26.25q.7,4,1.17,10.68T34,25.67a22.58,22.58,0,0,0,2.73-.14,19.27,19.27,0,0,0,2.47-.45c.09-1.29.16-2.69.22-4.22s.1-3.16.14-4.9c.75-.09,1.54-.16,2.37-.2s1.76,0,2.77,0c0-1,0-1.89-.1-2.57a12,12,0,0,0-.35-2,20.14,20.14,0,0,0-2.34.13,18.77,18.77,0,0,0-2.38.4c0-.78,0-1.57,0-2.37s-.06-1.59-.1-2.37c.51,0,1.3-.11,2.39-.23l4.1-.42A10.41,10.41,0,0,0,46.13,5,8.75,8.75,0,0,0,46.21,4a10.85,10.85,0,0,0-.08-1.34,6.31,6.31,0,0,0-.2-1.08Z"/>
4268
+ <path class="cls-1" d="M61.11,21a20.41,20.41,0,0,0-3.07.25,26,26,0,0,0-3.25.7c-.14-.88-.25-1.94-.32-3.17s-.1-3.13-.1-5.67c0-1.76.05-3.42.14-5s.22-2.81.37-3.74a6.81,6.81,0,0,0-.74-.07l-.72,0a19.18,19.18,0,0,0-2.49.17A20.39,20.39,0,0,0,48.39,5c0,2.84.18,6.4.52,10.68s.75,7.81,1.2,10.6q3.78-.54,6.33-.73c1.69-.14,3.46-.2,5.32-.2a14.9,14.9,0,0,0-.21-2.26A15.21,15.21,0,0,0,61.11,21Z"/>
4269
+ <path class="cls-1" d="M69.2,4.25A10.1,10.1,0,0,0,67.86,4a11.09,11.09,0,0,0-1.36-.07,7.12,7.12,0,0,0-1.92.25,5.51,5.51,0,0,0-1.59.7q.51,3.83.76,8.62T64,24.16A20.88,20.88,0,0,0,66.51,24a14.38,14.38,0,0,0,2.15-.39q.28-3,.45-7.12t.17-8q0-1.2,0-2.28c0-.72,0-1.37,0-2Z"/>
4270
+ <path class="cls-1" d="M80.84,7.18a1.42,1.42,0,0,1,1.31,1,6.72,6.72,0,0,1,.46,2.8,15.48,15.48,0,0,0,2.7-.19,12.09,12.09,0,0,0,2.55-.84A7,7,0,0,0,86,5.42,5.65,5.65,0,0,0,81.8,3.81a8.68,8.68,0,0,0-7.07,3.51,13.28,13.28,0,0,0-2.81,8.61,8.82,8.82,0,0,0,2,6.15,7,7,0,0,0,5.45,2.16,8.74,8.74,0,0,0,5.8-1.78,6.86,6.86,0,0,0,2.34-5,4.63,4.63,0,0,0-1.84-.66,8.79,8.79,0,0,0-2.43-.13,4.83,4.83,0,0,1-.39,3,2.1,2.1,0,0,1-2,1.06,2.23,2.23,0,0,1-2-1.58,11.41,11.41,0,0,1-.72-4.56,15.42,15.42,0,0,1,.79-5.22c.52-1.44,1.18-2.16,2-2.16Z"/>
4271
+ <path class="cls-1" d="M99.82,14.22a24.24,24.24,0,0,0,3-3.4,36.6,36.6,0,0,0,2.75-4.29a11.67,11.67,0,0,0-2.17-2,8.72,8.72,0,0,0-2.35-1.16a51.71,51.71,0,0,1-2.76,5.54,24.14,24.14,0,0,1-2.79,3.84c.07-1.54.19-3.05.36-4.54s.38-2.93.65-4.34a11.73,11.73,0,0,0-1.29-.25,12.48,12.48,0,0,0-1.44-.08a8.38,8.38,0,0,0-2.07.25,5.37,5.37,0,0,0-1.69.7c-.07,1.12-.13,2.22-.17,3.29s0,2.1,0,3.11q0,3.89.32,7.57a67.32,67.32,0,0,0,1,7,22.86,22.86,0,0,0,2.71-.17,13.09,13.09,0,0,0,2.23-.39q-.25-1.84-.39-3.66c-.1-1.21-.15-2.39-.17-3.55a.77.77,0,0,0,.15-.1l.16-.1a35.18,35.18,0,0,1,3.53,4.28a39,39,0,0,1,2.9,5A11.7,11.7,0,0,0,105,25.1a9.65,9.65,0,0,0,2.08-2.23A47.65,47.65,0,0,0,103.63,18a33.51,33.51,0,0,0-3.81-3.82Z"/>
4272
+ <path class="cls-1" d="M124.86,1.87a17.07,17.07,0,0,0-2.83.24,22.53,22.53,0,0,0-2.9.69c.17,1.1.3,2.53.4,4.28s.14,3.74.14,6a50.57,50.57,0,0,0-2.37-5,55,55,0,0,0-3-4.79,14.37,14.37,0,0,0-3,.41,11.7,11.7,0,0,0-2.53.91l-.22.11a3,3,0,0,0-.31.2q0,3.48.27,8.49t.8,11.13a19.17,19.17,0,0,0,2.49-.17A12.81,12.81,0,0,0,114,24V14.4c0-.92,0-1.77,0-2.54a49.47,49.47,0,0,1,2.4,4.34q1.16,2.37,3,6.72c.71,0,1.44-.1,2.2-.18s1.72-.22,2.88-.41c.17-2.32.3-4.74.41-7.25s.15-4.93.15-7.23c0-.94,0-1.9,0-2.89s0-2-.11-3.09Z"/>
4273
+ <path class="cls-1" d="M142.27,19.19c-.89.17-2.19.36-3.93.57s-2.89.33-3.43.33c-.07-.73-.13-1.5-.17-2.3s-.06-1.63-.08-2.47q1.49-.18,3.06-.27c1.05-.07,2.1-.1,3.17-.1,0-.93,0-1.75-.11-2.44a18.5,18.5,0,0,0-.34-2,21.7,21.7,0,0,0-2.92.19,19.5,19.5,0,0,0-2.86.62c0-1.07,0-1.87.05-2.4s0-1,.09-1.42c1.21-.07,2.39-.13,3.51-.16s2.2-.06,3.25-.06A20.56,20.56,0,0,0,142,4.83a19.15,19.15,0,0,0,.13-2.2,55.58,55.58,0,0,0-6.25.35c-2.12.23-4.63.62-7.51,1.16q.06,4,.63,9.91c.39,4,.81,7.44,1.28,10.42,2,0,4.41-.12,7.34-.34a37,37,0,0,0,5.21-.59,19.88,19.88,0,0,0-.16-2.43,8.59,8.59,0,0,0-.37-1.92Z"/>
4274
+ <path class="cls-1" d="M157,11.89q1.72-2.16,2.95-3.82c.83-1.1,1.56-2.16,2.22-3.17A9.76,9.76,0,0,0,160.4,3a9.62,9.62,0,0,0-2.13-1.4c-.53,1-1.09,1.95-1.69,2.94s-1.27,2-2,3.15c-.71-1.14-1.44-2.28-2.19-3.4S150.85,2.08,150,1a15.86,15.86,0,0,0-2.71,1.35,19.56,19.56,0,0,0-2.57,1.88Q146.37,6,147.85,8c1,1.32,2,2.73,3,4.25-.58.79-1.19,1.58-1.83,2.39s-2.26,2.78-4.88,5.95a10.68,10.68,0,0,0,1.35,1.5A10.94,10.94,0,0,0,147,23.32q1.74-1.77,3.21-3.42c1-1.09,2-2.28,3.05-3.57.56,1,1.16,2.12,1.8,3.35s1.49,2.94,2.58,5.15A25.27,25.27,0,0,0,160,23.46a8.81,8.81,0,0,0,1.61-1.32c-.69-1.82-1.42-3.57-2.18-5.27s-1.6-3.35-2.48-5Z"/>
4275
+ <path class="cls-1" d="M175.73,13.66a8.41,8.41,0,0,0-1.1-1.26,20.35,20.35,0,0,0-2-1.66,11.73,11.73,0,0,1-2.47-2.27,3.19,3.19,0,0,1-.56-1.77,1.53,1.53,0,0,1,.38-1.08,1.33,1.33,0,0,1,1-.41,1.93,1.93,0,0,1,1.63.76,5.25,5.25,0,0,1,.84,2.5a14.43,14.43,0,0,0,2.73-.41A6.64,6.64,0,0,0,178,7.23a6.74,6.74,0,0,0-2.32-4.11A7.23,7.23,0,0,0,171,1.73a7.69,7.69,0,0,0-5.27,1.77,5.83,5.83,0,0,0-2,4.57a6.91,6.91,0,0,0,.34,2.21a7.42,7.42,0,0,0,1,2,10.78,10.78,0,0,0,1.15,1.26a26.14,26.14,0,0,0,2.07,1.71a12.65,12.65,0,0,1,2.43,2.2,2.71,2.71,0,0,1,.55,1.59,2.06,2.06,0,0,1-.53,1.5,2,2,0,0,1-1.52.55,2.42,2.42,0,0,1-2.17-1.31,6.43,6.43,0,0,1-.81-3.43a8.78,8.78,0,0,0-2.12.32,10.48,10.48,0,0,0-2.17.77a6.45,6.45,0,0,0,2.23,4.9,7.93,7.93,0,0,0,5.57,2.06,7.31,7.31,0,0,0,5.11-1.89A6.18,6.18,0,0,0,177,17.7a7.12,7.12,0,0,0-.31-2.15,6.71,6.71,0,0,0-1-1.89Z"/>
4276
+ <path class="cls-2" d="M24.28,12a1.43,1.43,0,0,1,.44,2.44l-8.11,6.84-8.1,6.85a1.43,1.43,0,0,1-2.33-.85L4.3,16.84,2.43,6.4A1.43,1.43,0,0,1,4.32,4.8l10,3.59Z"/>
4277
+ <path class="cls-1" d="M29.4,13.7a1.62,1.62,0,0,1,0,2.81L19,22.5l-10.39,6a1.62,1.62,0,0,1-2.43-1.4v-24a1.62,1.62,0,0,1,2.43-1.4L19,7.7Z"/>
4278
+ <path class="cls-3" d="M17.5,8.84l-2.33.74c-1.12.36-2,.63-2.63.82-.92.28-1.78.52-2.58.74s-1.61.41-2.41.59C8.22,13.68,9,16.3,9.72,19.6s1.37,6.23,1.79,8.8a18.88,18.88,0,0,0,2-.44,14.36,14.36,0,0,0,1.8-.64c-.08-1-.2-2-.34-3.2s-.31-2.38-.5-3.69c.55-.16,1.14-.3,1.76-.43s1.31-.26,2.07-.38q-.2-1.15-.39-1.92a8.8,8.8,0,0,0-.5-1.42,16.83,16.83,0,0,0-1.74.38,14.8,14.8,0,0,0-1.73.6c-.1-.59-.2-1.18-.32-1.78s-.24-1.18-.37-1.76L15,13.26l3-.82a8.59,8.59,0,0,0,0-1,6.88,6.88,0,0,0-.08-.83q-.09-.54-.21-1a6.18,6.18,0,0,0-.29-.78Z"/>
4279
+ </svg>
4280
+ `;
4281
+
4282
+ brandingContainer.innerHTML = logoSvg;
4283
+
4284
+ // Add click handler to redirect to flicknexs.com
4285
+ brandingContainer.addEventListener('click', (event) => {
4286
+ event.preventDefault();
4287
+ event.stopPropagation();
4288
+
4289
+ // Open flicknexs.com in a new tab/window
4290
+ const link = document.createElement('a');
4291
+ link.href = 'https://flicknexs.com/';
4292
+ link.target = '_blank';
4293
+ link.rel = 'noopener noreferrer';
4294
+ document.body.appendChild(link);
4295
+ link.click();
4296
+ document.body.removeChild(link);
4297
+
4298
+ // Emit analytics event
4299
+ this.emit('frameworkBrandingClick', {
4300
+ timestamp: Date.now(),
4301
+ url: 'https://flicknexs.com/',
4302
+ userAgent: navigator.userAgent
4303
+ });
4304
+ });
4305
+
4306
+ container.appendChild(brandingContainer);
4307
+
4308
+ this.debugLog('Framework branding added');
4309
+ }
4214
4310
 
4215
4311
  private createCustomControls(container: HTMLElement): void {
4216
4312
  // Add gradients
@@ -4289,6 +4385,17 @@ export class WebPlayer extends BasePlayer {
4289
4385
  controlsBar.className = 'uvf-controls-bar';
4290
4386
  controlsBar.id = 'uvf-controls';
4291
4387
 
4388
+ // Time and branding section above seekbar
4389
+ const aboveSeekbarSection = document.createElement('div');
4390
+ aboveSeekbarSection.className = 'uvf-above-seekbar-section';
4391
+
4392
+ // Time display (moved to above seekbar)
4393
+ const timeDisplay = document.createElement('div');
4394
+ timeDisplay.className = 'uvf-time-display uvf-above-seekbar';
4395
+ timeDisplay.id = 'uvf-time-display';
4396
+ timeDisplay.textContent = '00:00 / 00:00';
4397
+ aboveSeekbarSection.appendChild(timeDisplay);
4398
+
4292
4399
  // Progress section
4293
4400
  const progressSection = document.createElement('div');
4294
4401
  progressSection.className = 'uvf-progress-section';
@@ -4360,13 +4467,6 @@ export class WebPlayer extends BasePlayer {
4360
4467
  `;
4361
4468
  controlsRow.appendChild(volumeControl);
4362
4469
 
4363
- // Time display
4364
- const timeDisplay = document.createElement('div');
4365
- timeDisplay.className = 'uvf-time-display';
4366
- timeDisplay.id = 'uvf-time-display';
4367
- timeDisplay.textContent = '00:00 / 00:00';
4368
- controlsRow.appendChild(timeDisplay);
4369
-
4370
4470
  // Right controls
4371
4471
  const rightControls = document.createElement('div');
4372
4472
  rightControls.className = 'uvf-right-controls';
@@ -4430,6 +4530,7 @@ export class WebPlayer extends BasePlayer {
4430
4530
  controlsRow.appendChild(rightControls);
4431
4531
 
4432
4532
  // Assemble controls bar
4533
+ controlsBar.appendChild(aboveSeekbarSection);
4433
4534
  controlsBar.appendChild(progressSection);
4434
4535
  controlsBar.appendChild(controlsRow);
4435
4536
  container.appendChild(controlsBar);