unified-video-framework 1.4.441 → 1.4.442

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.
@@ -2907,20 +2907,22 @@ export class WebPlayer extends BasePlayer {
2907
2907
  // 1. Globe Block (Left)
2908
2908
  const globeBlock = document.createElement('div');
2909
2909
  globeBlock.style.cssText = `
2910
- width: ${height}px;
2910
+ width: ${height * 1.2}px;
2911
2911
  height: ${height}px;
2912
- background: linear-gradient(135deg, #cc0000 0%, #880000 100%);
2912
+ background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
2913
2913
  display: flex;
2914
2914
  align-items: center;
2915
2915
  justify-content: center;
2916
2916
  flex-shrink: 0;
2917
- clip-path: polygon(0 0, 85% 0, 100% 100%, 0 100%);
2918
- z-index: 10;
2919
- box-shadow: 5px 0 15px rgba(0,0,0,0.5);
2917
+ clip-path: polygon(0% 0%, 75% 0%, 100% 100%, 0% 100%);
2918
+ z-index: 20;
2919
+ box-shadow: 10px 0 20px rgba(0,0,0,0.4);
2920
+ position: relative;
2920
2921
  `;
2921
2922
  const globe = this.createGlobeElement(true);
2922
- globe.style.width = '60%';
2923
- globe.style.height = '60%';
2923
+ globe.style.width = '45%';
2924
+ globe.style.height = '45%';
2925
+ globe.style.marginRight = '15%'; // Offset from the angle
2924
2926
  globeBlock.appendChild(globe);
2925
2927
  ticker.appendChild(globeBlock);
2926
2928
 
@@ -2930,19 +2932,21 @@ export class WebPlayer extends BasePlayer {
2930
2932
  flex-grow: 1;
2931
2933
  display: flex;
2932
2934
  flex-direction: column;
2933
- margin-left: -${height * 0.15}px;
2935
+ margin-left: -${height * 0.3}px; /* Deeper overlap */
2936
+ z-index: 10;
2934
2937
  `;
2935
2938
 
2936
2939
  // Row 1: Top Blue Bar (Headline)
2937
2940
  const topBar = document.createElement('div');
2938
2941
  topBar.style.cssText = `
2939
- height: 60%;
2940
- background: linear-gradient(90deg, #1e3c72 0%, #2a5298 100%);
2942
+ height: 55%;
2943
+ background: linear-gradient(90deg, #1e3c72 0%, #2a5298 50%, #1e3c72 100%);
2941
2944
  clip-path: polygon(5% 0, 100% 0, 98% 100%, 0% 100%);
2942
2945
  display: flex;
2943
2946
  align-items: center;
2944
- padding: 0 40px;
2947
+ padding: 0 40px 0 60px;
2945
2948
  color: white;
2949
+ border-bottom: 3px solid rgba(255,255,255,0.1);
2946
2950
  `;
2947
2951
 
2948
2952
  const breakingText = document.createElement('span');
@@ -2950,9 +2954,11 @@ export class WebPlayer extends BasePlayer {
2950
2954
  breakingText.style.cssText = `
2951
2955
  font-weight: 900;
2952
2956
  font-style: italic;
2953
- font-size: ${height * 0.22}px;
2957
+ font-size: ${height * 0.2}px;
2954
2958
  margin-right: 20px;
2955
- border-bottom: 2px solid white;
2959
+ white-space: nowrap;
2960
+ color: #fff;
2961
+ text-shadow: 0 0 10px rgba(255,255,255,0.5);
2956
2962
  `;
2957
2963
  topBar.appendChild(breakingText);
2958
2964
 
@@ -2971,33 +2977,33 @@ export class WebPlayer extends BasePlayer {
2971
2977
  // Row 2: Bottom Black Bar (Scrolling Items)
2972
2978
  const bottomBar = document.createElement('div');
2973
2979
  bottomBar.style.cssText = `
2974
- height: 40%;
2975
- background: #000;
2980
+ height: 45%;
2981
+ background: #0d0d0d;
2976
2982
  display: flex;
2977
2983
  align-items: center;
2978
- clip-path: polygon(1% 0, 100% 0, 100% 100%, 0% 100%);
2984
+ clip-path: polygon(2% 0, 100% 0, 100% 100%, 0% 100%);
2985
+ border-top: 1px solid rgba(255,255,255,0.05);
2979
2986
  `;
2980
2987
 
2981
- // LIVE badge
2982
2988
  const liveBadge = document.createElement('div');
2983
2989
  liveBadge.textContent = 'LIVE';
2984
2990
  liveBadge.style.cssText = `
2985
2991
  background: #f1c40f;
2986
- color: black;
2992
+ color: #000;
2987
2993
  font-weight: 900;
2988
- font-size: ${height * 0.15}px;
2989
- padding: 2px 10px;
2990
- margin-left: 20px;
2991
- clip-path: polygon(0 0, 90% 0, 100% 100%, 0 100%);
2994
+ font-size: ${height * 0.16}px;
2995
+ padding: 2px 12px;
2996
+ margin-left: 50px;
2997
+ clip-path: polygon(0 0, 85% 0, 100% 100%, 0 100%);
2992
2998
  `;
2993
2999
  bottomBar.appendChild(liveBadge);
2994
3000
 
2995
3001
  // Scrolling track
2996
3002
  const trackContainer = document.createElement('div');
2997
3003
  trackContainer.style.cssText = `flex-grow: 1; overflow: hidden; height: 100%; display: flex; align-items: center;`;
2998
-
2999
3004
  const track = this.createSeamlessScrollingTrack(config.items || [], config);
3000
3005
  track.style.fontSize = `${height * 0.18}px`;
3006
+ track.style.color = '#fff';
3001
3007
  trackContainer.appendChild(track);
3002
3008
  bottomBar.appendChild(trackContainer);
3003
3009
 
@@ -3020,8 +3026,8 @@ export class WebPlayer extends BasePlayer {
3020
3026
  position: absolute;
3021
3027
  left: 5%;
3022
3028
  right: 5%;
3029
+ bottom: ${bottomOffset}px;
3023
3030
  height: ${height}px;
3024
- ${position === 'top' ? `top: ${topOffset}px;` : `bottom: ${bottomOffset}px;`}
3025
3031
  display: flex;
3026
3032
  align-items: flex-end;
3027
3033
  font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
@@ -3029,28 +3035,38 @@ export class WebPlayer extends BasePlayer {
3029
3035
  pointer-events: none;
3030
3036
  `;
3031
3037
 
3032
- // Globe icon (floating on left)
3038
+ // Globe icon (floating on left, nested for z-index control)
3039
+ const globeWrapper = document.createElement('div');
3040
+ globeWrapper.style.cssText = `
3041
+ width: ${height * 0.75}px;
3042
+ height: ${height * 0.75}px;
3043
+ position: relative;
3044
+ z-index: 30;
3045
+ margin-right: 10px;
3046
+ flex-shrink: 0;
3047
+ `;
3048
+
3033
3049
  const globeContainer = document.createElement('div');
3034
3050
  globeContainer.style.cssText = `
3035
- width: ${height * 0.8}px;
3036
- height: ${height * 0.8}px;
3037
- background: rgba(255,255,255,0.1);
3051
+ width: 100%;
3052
+ height: 100%;
3053
+ background: radial-gradient(circle, #e74c3c 0%, #c0392b 100%);
3038
3054
  border-radius: 50%;
3039
3055
  display: flex;
3040
3056
  align-items: center;
3041
3057
  justify-content: center;
3042
- margin-right: 15px;
3043
- box-shadow: 0 0 20px rgba(0,0,0,0.5);
3044
- border: 2px solid rgba(255,255,255,0.2);
3058
+ box-shadow: 0 0 25px rgba(0,0,0,0.6);
3059
+ border: 3px solid #fff;
3045
3060
  `;
3046
3061
  const globe = this.createGlobeElement(true);
3047
3062
  globe.style.width = '70%';
3048
3063
  globe.style.height = '70%';
3049
3064
  globeContainer.appendChild(globe);
3050
- ticker.appendChild(globeContainer);
3065
+ globeWrapper.appendChild(globeContainer);
3066
+ ticker.appendChild(globeWrapper);
3051
3067
 
3052
3068
  const content = document.createElement('div');
3053
- content.style.cssText = `flex-grow: 1; display: flex; flex-direction: column;`;
3069
+ content.style.cssText = `flex-grow: 1; display: flex; flex-direction: column; z-index: 20;`;
3054
3070
 
3055
3071
  // Row 1: Yellow/Red Header
3056
3072
  const row1 = document.createElement('div');
@@ -3062,40 +3078,44 @@ export class WebPlayer extends BasePlayer {
3062
3078
  background: #f1c40f;
3063
3079
  color: black;
3064
3080
  font-weight: 900;
3065
- padding: 0 20px;
3081
+ padding: 0 25px;
3066
3082
  display: flex;
3067
3083
  align-items: center;
3068
- clip-path: polygon(0 0, 90% 0, 100% 100%, 0 100%);
3069
- font-size: ${height * 0.18}px;
3084
+ clip-path: polygon(0 0, 85% 0, 100% 100%, 0 100%);
3085
+ font-size: ${height * 0.2}px;
3086
+ position: relative;
3087
+ z-index: 2;
3070
3088
  `;
3071
3089
  row1.appendChild(badge);
3072
3090
 
3073
3091
  const headline = document.createElement('div');
3074
3092
  headline.textContent = config.headline || 'LOREM IPSUM DOLOR SIT AMET, CONSECTETUER';
3075
3093
  headline.style.cssText = `
3076
- background: #e74c3c;
3094
+ background: linear-gradient(90deg, #e74c3c 0%, #c1392b 100%);
3077
3095
  color: white;
3078
3096
  font-weight: 700;
3079
- padding: 0 30px;
3097
+ padding: 0 40px;
3080
3098
  display: flex;
3081
3099
  align-items: center;
3082
3100
  flex-grow: 1;
3083
- margin-left: -10px;
3084
- clip-path: polygon(2% 0, 100% 0, 98% 100%, 0 100%);
3101
+ margin-left: -20px;
3102
+ clip-path: polygon(5% 0, 100% 0, 95% 100%, 0 100%);
3085
3103
  font-size: ${height * 0.22}px;
3104
+ border-bottom: 2px solid rgba(255,255,255,0.2);
3086
3105
  `;
3087
3106
  row1.appendChild(headline);
3088
3107
  content.appendChild(row1);
3089
3108
 
3090
- // Row 2: Blue Ticker
3109
+ // Row 2: Blue Ticker (Semi-transparent)
3091
3110
  const row2 = document.createElement('div');
3092
3111
  row2.style.cssText = `
3093
3112
  height: 40%;
3094
- background: #2980b9;
3113
+ background: rgba(41, 128, 185, 0.9);
3095
3114
  display: flex;
3096
3115
  align-items: center;
3097
- margin-top: 2px;
3098
- clip-path: polygon(0 0, 100% 0, 100% 100%, 1% 100%);
3116
+ margin-top: 4px;
3117
+ clip-path: polygon(1% 0, 100% 0, 100% 100%, 2% 100%);
3118
+ backdrop-filter: blur(5px);
3099
3119
  `;
3100
3120
 
3101
3121
  const live = document.createElement('div');
@@ -3105,8 +3125,10 @@ export class WebPlayer extends BasePlayer {
3105
3125
  color: #2980b9;
3106
3126
  font-weight: 900;
3107
3127
  padding: 0 15px;
3108
- margin: 0 10px;
3109
- font-size: ${height * 0.15}px;
3128
+ margin-left: 30px;
3129
+ margin-right: 15px;
3130
+ font-size: ${height * 0.16}px;
3131
+ box-shadow: 2px 0 5px rgba(0,0,0,0.2);
3110
3132
  `;
3111
3133
  row2.appendChild(live);
3112
3134
 
@@ -3227,8 +3249,8 @@ export class WebPlayer extends BasePlayer {
3227
3249
  position: absolute;
3228
3250
  left: 15%;
3229
3251
  right: 15%;
3252
+ bottom: ${bottomOffset}px;
3230
3253
  height: ${height}px;
3231
- ${position === 'top' ? `top: ${topOffset}px;` : `bottom: ${bottomOffset}px;`}
3232
3254
  display: flex;
3233
3255
  align-items: flex-end;
3234
3256
  font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
@@ -3239,35 +3261,37 @@ export class WebPlayer extends BasePlayer {
3239
3261
  // Large Blue Box
3240
3262
  const newsBox = document.createElement('div');
3241
3263
  newsBox.style.cssText = `
3242
- width: ${height * 1.5}px;
3264
+ width: ${height * 1.6}px;
3243
3265
  height: 100%;
3244
- background: #1e3c72;
3266
+ background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
3245
3267
  display: flex;
3246
3268
  flex-direction: column;
3247
3269
  justify-content: center;
3248
- padding-left: 15px;
3270
+ align-items: center;
3249
3271
  position: relative;
3250
- clip-path: polygon(0 0, 100% 0, 95% 100%, 0 100%);
3272
+ clip-path: polygon(0 0, 100% 0, 85% 100%, 0 100%);
3251
3273
  flex-shrink: 0;
3274
+ z-index: 30;
3275
+ box-shadow: 5px 0 15px rgba(0,0,0,0.4);
3252
3276
  `;
3253
3277
 
3254
3278
  const bt = document.createElement('div');
3255
- bt.style.cssText = `display: flex; gap: 5px; margin-bottom: 5px;`;
3279
+ bt.style.cssText = `display: flex; gap: 5px; margin-bottom: 2px; width: 100%; justify-content: center; padding-right: 15%;`;
3256
3280
 
3257
3281
  const b1 = document.createElement('span');
3258
3282
  b1.textContent = 'BREAKING';
3259
- b1.style.cssText = `background: #c0392b; font-size: 10px; font-weight: 800; padding: 2px 5px; border-radius: 2px; color: white;`;
3283
+ b1.style.cssText = `background: #c0392b; font-size: ${height * 0.14}px; font-weight: 900; padding: 2px 6px; border-radius: 2px; color: white;`;
3260
3284
  bt.appendChild(b1);
3261
3285
 
3262
3286
  const b2 = document.createElement('span');
3263
3287
  b2.textContent = 'LIVE';
3264
- b2.style.cssText = `background: #f1c40f; font-size: 10px; font-weight: 800; padding: 2px 5px; border-radius: 2px; color: black;`;
3288
+ b2.style.cssText = `background: #f1c40f; font-size: ${height * 0.14}px; font-weight: 900; padding: 2px 6px; border-radius: 2px; color: black;`;
3265
3289
  bt.appendChild(b2);
3266
3290
  newsBox.appendChild(bt);
3267
3291
 
3268
3292
  const nt = document.createElement('div');
3269
3293
  nt.textContent = 'NEWS';
3270
- nt.style.cssText = `font-size: ${height * 0.4}px; font-weight: 900; color: white; letter-spacing: 2px;`;
3294
+ nt.style.cssText = `font-size: ${height * 0.45}px; font-weight: 900; color: white; letter-spacing: 4px; padding-right: 15%; line-height: 1;`;
3271
3295
  newsBox.appendChild(nt);
3272
3296
  ticker.appendChild(newsBox);
3273
3297
 
@@ -3276,18 +3300,20 @@ export class WebPlayer extends BasePlayer {
3276
3300
  redBar.style.cssText = `
3277
3301
  flex-grow: 1;
3278
3302
  height: 50%;
3279
- background: #c0392b;
3280
- margin-left: -${height * 0.1}px;
3303
+ background: linear-gradient(90deg, #c0392b 0%, #e74c3c 100%);
3304
+ margin-left: -${height * 0.2}px;
3281
3305
  display: flex;
3282
3306
  align-items: center;
3283
- padding-left: 20px;
3284
- clip-path: polygon(2% 0, 100% 0, 100% 100%, 0 100%);
3307
+ padding-left: ${height * 0.3}px;
3308
+ padding-right: 20px;
3309
+ clip-path: polygon(5% 0, 100% 0, 100% 100%, 0 100%);
3310
+ z-index: 20;
3285
3311
  `;
3286
3312
 
3287
3313
  const tCont = document.createElement('div');
3288
3314
  tCont.style.cssText = `flex-grow: 1; overflow: hidden; height: 100%; display: flex; align-items: center; color: white;`;
3289
3315
  const track = this.createSeamlessScrollingTrack(config.items || [], config);
3290
- track.style.fontSize = `${height * 0.25}px`;
3316
+ track.style.fontSize = `${height * 0.22}px`;
3291
3317
  track.style.fontWeight = '700';
3292
3318
  tCont.appendChild(track);
3293
3319
  redBar.appendChild(tCont);