vidply 1.0.8 → 1.0.10

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/vidply.css CHANGED
@@ -41,27 +41,32 @@
41
41
  --vidply-border-hover: var(--vidply-white-30);
42
42
  --vidply-border-light: var(--vidply-white-10);
43
43
  --vidply-focus-outline: 2px solid var(--vidply-primary);
44
+ --vidply-focus-outline-player: 3px solid var(--vidply-primary-light);
44
45
  --vidply-focus-outline-white: 2px solid var(--vidply-primary-light);
45
46
  --vidply-hover-bg: var(--vidply-white-10);
46
47
  --vidply-primary: #0a406e;
47
48
  --vidply-primary-10: rgb(var(--vidply-primary-rgb), 0.1);
48
49
  --vidply-primary-15: rgb(var(--vidply-primary-rgb), 0.15);
49
-
50
- /* Black Color Variations */
51
50
  --vidply-primary-20: rgb(var(--vidply-primary-rgb), 0.2);
52
51
  --vidply-primary-25: rgb(var(--vidply-primary-rgb), 0.25);
53
52
  --vidply-primary-30: rgb(var(--vidply-primary-rgb), 0.3);
54
53
  --vidply-primary-40: rgb(var(--vidply-primary-rgb), 0.4);
55
54
  --vidply-primary-50: rgb(var(--vidply-primary-rgb), 0.5);
55
+
56
+ /* Black Color Variations */
56
57
  --vidply-primary-60: rgb(var(--vidply-primary-rgb), 0.6);
57
58
  --vidply-primary-70: rgb(var(--vidply-primary-rgb), 0.7);
58
59
  --vidply-primary-80: rgb(var(--vidply-primary-rgb), 0.8);
59
60
  --vidply-primary-dark: #083358;
60
-
61
- /* UI Background Colors */
62
61
  --vidply-primary-dark-rgb: 8, 51, 88;
63
62
  --vidply-primary-light: #71b7e2;
64
63
  --vidply-primary-rgb: 10, 64, 110;
64
+ --vidply-scrollbar-thumb: var(--vidply-white);
65
+ --vidply-scrollbar-thumb-hover: var(--vidply-white-90);
66
+
67
+ /* UI Background Colors */
68
+ --vidply-scrollbar-track: #404040;
69
+ --vidply-scrollbar-track-transcript: #555;
65
70
  --vidply-shadow-lg: 0 12px 48px var(--vidply-black-80);
66
71
  --vidply-shadow-md: 0 4px 12px var(--vidply-black-40);
67
72
  --vidply-shadow-sm: 0 2px 4px var(--vidply-black-30);
@@ -70,6 +75,7 @@
70
75
  --vidply-text-primary: var(--vidply-white);
71
76
  --vidply-text-secondary: var(--vidply-white-90);
72
77
  --vidply-text-subtle: var(--vidply-white-50);
78
+ --vidply-transition-default: all 0.2s ease;
73
79
 
74
80
  /* Border Colors */
75
81
  --vidply-white: #fff;
@@ -116,16 +122,11 @@
116
122
 
117
123
  /* Player Focus Outline */
118
124
  .vidply-player:focus {
119
- outline: 3px solid var(--vidply-primary-light);
120
- outline-offset: 4px;
121
- }
122
-
123
- .vidply-player:focus:not(:focus-visible) {
124
125
  outline: none;
125
126
  }
126
127
 
127
128
  .vidply-player:focus-visible {
128
- outline: 3px solid var(--vidply-primary-light);
129
+ outline: var(--vidply-focus-outline-player);
129
130
  outline-offset: 4px;
130
131
  }
131
132
 
@@ -198,6 +199,17 @@
198
199
  z-index: 1; /* Base video layer */
199
200
  }
200
201
 
202
+ .vidply-video-wrapper.vidply-forced-poster {
203
+ background-image: var(--vidply-poster-image);
204
+ background-position: center;
205
+ background-repeat: no-repeat;
206
+ background-size: cover;
207
+ }
208
+
209
+ .vidply-video-wrapper.vidply-forced-poster > video {
210
+ opacity: 0;
211
+ }
212
+
201
213
  /* Mobile: Simplify video wrapper */
202
214
  @media (width <= 640px) {
203
215
  .vidply-video-wrapper {
@@ -317,9 +329,6 @@
317
329
  .vidply-progress-container:hover,
318
330
  .vidply-progress-container:focus {
319
331
  height: 8px;
320
- }
321
-
322
- .vidply-progress-container:focus {
323
332
  outline: var(--vidply-focus-outline-white);
324
333
  outline-offset: 2px;
325
334
  }
@@ -427,10 +436,6 @@
427
436
  outline-offset: 2px;
428
437
  }
429
438
 
430
- .vidply-button:focus:not(:focus-visible) {
431
- outline: none;
432
- }
433
-
434
439
  .vidply-button:disabled {
435
440
  cursor: not-allowed;
436
441
  opacity: 0.5;
@@ -1316,12 +1321,16 @@
1316
1321
  }
1317
1322
  }
1318
1323
 
1319
- /* Focus Visible Polyfill */
1320
- .vidply-player :focus:not(:focus-visible) {
1321
- outline: none;
1322
- }
1323
-
1324
- .vidply-player :focus-visible {
1324
+ /* Focus Visible */
1325
+ .vidply-player :focus-visible,
1326
+ .vidply-player button:hover,
1327
+ .vidply-player a:hover,
1328
+ .vidply-player input:hover,
1329
+ .vidply-player select:hover,
1330
+ .vidply-player textarea:hover,
1331
+ .vidply-player [role="button"]:hover,
1332
+ .vidply-player [role="link"]:hover,
1333
+ .vidply-player [tabindex]:not([tabindex="-1"]):hover {
1325
1334
  outline: var(--vidply-focus-outline-white);
1326
1335
  outline-offset: 2px;
1327
1336
  }
@@ -1408,7 +1417,7 @@
1408
1417
  gap: 12px;
1409
1418
  padding: 12px 16px;
1410
1419
  position: relative;
1411
- transition: all 0.2s ease;
1420
+ transition: var(--vidply-transition-default);
1412
1421
  }
1413
1422
 
1414
1423
  .vidply-playlist-item:hover {
@@ -1419,19 +1428,14 @@
1419
1428
  .vidply-playlist-item:focus {
1420
1429
  background: var(--vidply-white-08);
1421
1430
  border-left-color: var(--vidply-primary);
1422
- outline: 2px solid var(--vidply-primary-light);
1423
- outline-offset: -2px;
1424
- z-index: 1;
1425
- }
1426
-
1427
- .vidply-playlist-item:focus:not(:focus-visible) {
1428
1431
  outline: none;
1432
+ z-index: 1;
1429
1433
  }
1430
1434
 
1431
1435
  .vidply-playlist-item:focus-visible {
1432
1436
  background: var(--vidply-white-08);
1433
1437
  border-left-color: var(--vidply-primary);
1434
- outline: 2px solid var(--vidply-primary-light);
1438
+ outline: var(--vidply-focus-outline-white);
1435
1439
  outline-offset: -2px;
1436
1440
  z-index: 1;
1437
1441
  }
@@ -1445,10 +1449,14 @@
1445
1449
  background: var(--vidply-primary-20);
1446
1450
  }
1447
1451
 
1448
- .vidply-playlist-item-active:focus,
1452
+ .vidply-playlist-item-active:focus {
1453
+ background: var(--vidply-primary-20);
1454
+ outline: none;
1455
+ }
1456
+
1449
1457
  .vidply-playlist-item-active:focus-visible {
1450
1458
  background: var(--vidply-primary-20);
1451
- outline: 2px solid var(--vidply-primary-light);
1459
+ outline: var(--vidply-focus-outline-white);
1452
1460
  outline-offset: -2px;
1453
1461
  }
1454
1462
 
@@ -1470,7 +1478,7 @@
1470
1478
  .vidply-playlist-thumbnail-icon {
1471
1479
  color: var(--vidply-text-subtle);
1472
1480
  height: 32px;
1473
- transition: all 0.2s ease;
1481
+ transition: var(--vidply-transition-default);
1474
1482
  width: 32px;
1475
1483
  }
1476
1484
 
@@ -1531,21 +1539,26 @@
1531
1539
  }
1532
1540
 
1533
1541
  /* Playlist Scrollbar */
1542
+ .vidply-playlist-panel {
1543
+ scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track);
1544
+ scrollbar-width: thin;
1545
+ }
1546
+
1534
1547
  .vidply-playlist-panel::-webkit-scrollbar {
1535
1548
  width: 8px;
1536
1549
  }
1537
1550
 
1538
1551
  .vidply-playlist-panel::-webkit-scrollbar-track {
1539
- background: var(--vidply-black-30);
1552
+ background: var(--vidply-scrollbar-track);
1540
1553
  }
1541
1554
 
1542
1555
  .vidply-playlist-panel::-webkit-scrollbar-thumb {
1543
- background: var(--vidply-white-20);
1556
+ background: var(--vidply-scrollbar-thumb);
1544
1557
  border-radius: 4px;
1545
1558
  }
1546
1559
 
1547
1560
  .vidply-playlist-panel::-webkit-scrollbar-thumb:hover {
1548
- background: var(--vidply-border-hover);
1561
+ background: var(--vidply-scrollbar-thumb-hover);
1549
1562
  }
1550
1563
 
1551
1564
  /* Audio Player with Playlist */
@@ -1576,7 +1589,7 @@
1576
1589
  flex-direction: column;
1577
1590
  max-width: 400px;
1578
1591
  order: 4; /* After video-wrapper (1), track-info (2), and playlist-panel (3) */
1579
- position: absolute;
1592
+ position: fixed;
1580
1593
  top: 0;
1581
1594
  width: 400px;
1582
1595
  z-index: 5;
@@ -1589,7 +1602,7 @@
1589
1602
 
1590
1603
  .vidply-transcript-header {
1591
1604
  align-items: center;
1592
- background: var(--vidply-active-bg);
1605
+ background: #282828;
1593
1606
  border-bottom: 1px solid var(--vidply-border-light);
1594
1607
  border-radius: 8px 8px 0 0;
1595
1608
  cursor: move;
@@ -1599,11 +1612,24 @@
1599
1612
  user-select: none;
1600
1613
  }
1601
1614
 
1615
+ .vidply-transcript-header:focus,
1616
+ .vidply-transcript-header:focus-visible {
1617
+ box-shadow: 0 0 0 4px rgb(91 144 255 / 35%);
1618
+ outline: 3px solid var(--vidply-primary-light);
1619
+ outline-offset: 2px;
1620
+ }
1621
+
1602
1622
  .vidply-transcript-header h3 {
1623
+ /* Visually hidden but accessible to screen readers */
1603
1624
  color: var(--vidply-white);
1604
1625
  font-size: 16px;
1605
1626
  font-weight: 600;
1627
+ height: 1px;
1628
+ left: -10000px;
1606
1629
  margin: 0;
1630
+ overflow: hidden;
1631
+ position: absolute;
1632
+ width: 1px;
1607
1633
  }
1608
1634
 
1609
1635
  .vidply-transcript-close {
@@ -1617,7 +1643,7 @@
1617
1643
  height: 28px;
1618
1644
  justify-content: center;
1619
1645
  padding: 4px;
1620
- transition: all 0.2s ease;
1646
+ transition: var(--vidply-transition-default);
1621
1647
  width: 28px;
1622
1648
  }
1623
1649
 
@@ -1720,31 +1746,92 @@
1720
1746
  }
1721
1747
 
1722
1748
  /* Transcript Scrollbar */
1749
+ .vidply-transcript-content {
1750
+ scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track-transcript);
1751
+ scrollbar-width: thin;
1752
+ }
1753
+
1723
1754
  .vidply-transcript-content::-webkit-scrollbar {
1724
1755
  width: 8px;
1725
1756
  }
1726
1757
 
1727
1758
  .vidply-transcript-content::-webkit-scrollbar-track {
1728
- background: var(--vidply-black-30);
1759
+ background: var(--vidply-scrollbar-track-transcript);
1729
1760
  }
1730
1761
 
1731
1762
  .vidply-transcript-content::-webkit-scrollbar-thumb {
1732
- background: var(--vidply-white-20);
1763
+ background: var(--vidply-scrollbar-thumb);
1733
1764
  border-radius: 4px;
1734
1765
  }
1735
1766
 
1736
1767
  .vidply-transcript-content::-webkit-scrollbar-thumb:hover {
1737
- background: var(--vidply-border-hover);
1768
+ background: var(--vidply-scrollbar-thumb-hover);
1738
1769
  }
1739
1770
 
1740
1771
  /* Transcript Header Left Side (Settings Button + Title) */
1741
1772
  .vidply-transcript-header-left {
1742
1773
  align-items: center;
1743
1774
  display: flex;
1744
- gap: 8px;
1775
+ gap: 16px;
1745
1776
  position: relative;
1746
1777
  }
1747
1778
 
1779
+ /* Transcript Autoscroll Checkbox */
1780
+ .vidply-transcript-autoscroll-label {
1781
+ align-items: center;
1782
+ cursor: pointer;
1783
+ display: flex;
1784
+ gap: 6px;
1785
+ user-select: none;
1786
+ white-space: nowrap;
1787
+ }
1788
+
1789
+ .vidply-transcript-autoscroll-label input[type="checkbox"] {
1790
+ cursor: pointer;
1791
+ height: 16px;
1792
+ margin: 0;
1793
+ width: 16px;
1794
+ }
1795
+
1796
+ .vidply-transcript-autoscroll-text {
1797
+ color: var(--vidply-text-muted);
1798
+ font-size: 13px;
1799
+ transition: color 0.2s ease;
1800
+ }
1801
+
1802
+ .vidply-transcript-autoscroll-label:hover .vidply-transcript-autoscroll-text {
1803
+ color: var(--vidply-white);
1804
+ }
1805
+
1806
+ /* Transcript Language Selector */
1807
+ .vidply-transcript-language-select {
1808
+ background: var(--vidply-white-10);
1809
+ border: 1px solid var(--vidply-white-20);
1810
+ border-radius: 4px;
1811
+ color: var(--vidply-white);
1812
+ cursor: pointer;
1813
+ font-size: 13px;
1814
+ padding: 4px 8px;
1815
+ transition: var(--vidply-transition-default);
1816
+ }
1817
+
1818
+ .vidply-transcript-language-select:hover {
1819
+ background: var(--vidply-white-15);
1820
+ border-color: var(--vidply-border-hover);
1821
+ }
1822
+
1823
+ .vidply-transcript-language-select:focus {
1824
+ background: var(--vidply-white-15);
1825
+ border-color: var(--vidply-border-focus);
1826
+ box-shadow: 0 0 0 3px var(--vidply-primary-20);
1827
+ outline: none;
1828
+ }
1829
+
1830
+ .vidply-transcript-language-select option {
1831
+ background: #1a1a1a;
1832
+ color: var(--vidply-white);
1833
+ }
1834
+
1748
1835
  /* Transcript Settings Button */
1749
1836
  .vidply-transcript-settings {
1750
1837
  align-items: center;
@@ -1758,7 +1845,7 @@
1758
1845
  justify-content: center;
1759
1846
  padding: 4px;
1760
1847
  position: relative;
1761
- transition: all 0.2s ease;
1848
+ transition: var(--vidply-transition-default);
1762
1849
  width: 28px;
1763
1850
  }
1764
1851
 
@@ -1768,7 +1855,7 @@
1768
1855
  }
1769
1856
 
1770
1857
  .vidply-transcript-settings:focus {
1771
- outline: 2px solid var(--vidply-primary-light);
1858
+ outline: var(--vidply-focus-outline-white);
1772
1859
  outline-offset: 2px;
1773
1860
  }
1774
1861
 
@@ -2012,6 +2099,22 @@
2012
2099
  z-index: 1000;
2013
2100
  }
2014
2101
 
2102
+ .vidply-transcript-resize-tooltip {
2103
+ animation: fadeInDown 0.3s ease;
2104
+ background: var(--vidply-primary);
2105
+ border-radius: 4px;
2106
+ color: var(--vidply-white);
2107
+ font-size: 12px;
2108
+ left: 50%;
2109
+ padding: 6px 12px;
2110
+ position: absolute;
2111
+ text-align: center;
2112
+ top: 100%;
2113
+ transform: translateX(-50%);
2114
+ white-space: nowrap;
2115
+ z-index: 1000;
2116
+ }
2117
+
2015
2118
  @keyframes fadeInDown {
2016
2119
  from {
2017
2120
  opacity: 0;
@@ -2090,7 +2193,7 @@
2090
2193
  font-size: 13px;
2091
2194
  outline: none;
2092
2195
  padding: 6px 10px;
2093
- transition: all 0.2s ease;
2196
+ transition: var(--vidply-transition-default);
2094
2197
  width: 100%;
2095
2198
  }
2096
2199
 
@@ -2118,7 +2221,7 @@
2118
2221
  height: 32px;
2119
2222
  outline: none;
2120
2223
  padding: 4px;
2121
- transition: all 0.2s ease;
2224
+ transition: var(--vidply-transition-default);
2122
2225
  width: 100%;
2123
2226
  }
2124
2227
 
@@ -2202,7 +2305,7 @@
2202
2305
  font-weight: 600;
2203
2306
  margin-top: 12px;
2204
2307
  padding: 8px 16px;
2205
- transition: all 0.2s ease;
2308
+ transition: var(--vidply-transition-default);
2206
2309
  width: 100%;
2207
2310
  }
2208
2311
 
@@ -2224,9 +2327,8 @@
2224
2327
  .vidply-sign-language-wrapper {
2225
2328
  background: transparent;
2226
2329
  height: auto;
2227
- max-width: 400px;
2330
+ max-width: none;
2228
2331
  min-height: 100px;
2229
- min-width: 150px;
2230
2332
  position: absolute;
2231
2333
  transition: opacity 0.3s ease;
2232
2334
  width: 280px;
@@ -2234,7 +2336,7 @@
2234
2336
  }
2235
2337
 
2236
2338
  .vidply-fullscreen .vidply-sign-language-wrapper {
2237
- max-width: 600px;
2339
+ max-width: none;
2238
2340
  }
2239
2341
 
2240
2342
  .vidply-sign-language-wrapper:focus {