@frameset/plex-player 1.0.5 → 1.0.6

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.
@@ -1477,15 +1477,15 @@
1477
1477
  }
1478
1478
 
1479
1479
  /* =====================================================
1480
- PLEX Video Player - Settings Styles
1480
+ PLEX Video Player - Settings Styles (NPM Package)
1481
1481
  ===================================================== */
1482
1482
 
1483
1483
  /* Settings Panel */
1484
- .settings-panel {
1484
+ .plex-settings-panel {
1485
1485
  position: absolute;
1486
1486
  bottom: 80px;
1487
- right: 20px;
1488
- width: 300px;
1487
+ right: 16px;
1488
+ width: 280px;
1489
1489
  max-height: 400px;
1490
1490
  background: var(--plex-bg-dark);
1491
1491
  border: 1px solid var(--plex-border);
@@ -1493,23 +1493,21 @@
1493
1493
  box-shadow: var(--plex-shadow);
1494
1494
  z-index: var(--plex-z-panel);
1495
1495
  overflow: hidden;
1496
+ opacity: 0;
1497
+ visibility: hidden;
1498
+ transform: scale(0.95) translateY(10px);
1496
1499
  transform-origin: bottom right;
1497
- animation: settingsOpen 0.2s ease;
1500
+ transition: all var(--plex-transition-fast);
1498
1501
  }
1499
1502
 
1500
- @keyframes settingsOpen {
1501
- from {
1502
- opacity: 0;
1503
- transform: scale(0.95);
1504
- }
1505
- to {
1506
- opacity: 1;
1507
- transform: scale(1);
1508
- }
1503
+ .plex-settings-panel.plex-settings-open {
1504
+ opacity: 1;
1505
+ visibility: visible;
1506
+ transform: scale(1) translateY(0);
1509
1507
  }
1510
1508
 
1511
1509
  /* Settings Header */
1512
- .settings-header {
1510
+ .plex-settings-header {
1513
1511
  display: flex;
1514
1512
  align-items: center;
1515
1513
  justify-content: space-between;
@@ -1518,385 +1516,136 @@
1518
1516
  border-bottom: 1px solid var(--plex-border);
1519
1517
  }
1520
1518
 
1521
- .settings-title {
1519
+ .plex-settings-title {
1522
1520
  font-size: 15px;
1523
1521
  font-weight: 600;
1524
1522
  color: var(--plex-text-primary);
1525
1523
  }
1526
1524
 
1527
- /* Settings Content */
1528
- .settings-content {
1529
- max-height: 340px;
1530
- overflow-y: auto;
1531
- }
1532
-
1533
- .settings-content::-webkit-scrollbar {
1534
- width: 6px;
1525
+ .plex-settings-close {
1526
+ display: flex;
1527
+ align-items: center;
1528
+ justify-content: center;
1529
+ width: 28px;
1530
+ height: 28px;
1531
+ padding: 0;
1532
+ background: transparent;
1533
+ border: none;
1534
+ border-radius: var(--plex-radius-sm);
1535
+ cursor: pointer;
1536
+ color: var(--plex-text-secondary);
1537
+ transition: all var(--plex-transition-fast);
1535
1538
  }
1536
1539
 
1537
- .settings-content::-webkit-scrollbar-track {
1538
- background: transparent;
1540
+ .plex-settings-close:hover {
1541
+ background: rgba(255, 255, 255, 0.1);
1542
+ color: var(--plex-text-primary);
1539
1543
  }
1540
1544
 
1541
- .settings-content::-webkit-scrollbar-thumb {
1542
- background: rgba(255, 255, 255, 0.2);
1543
- border-radius: 3px;
1545
+ .plex-settings-close svg {
1546
+ width: 18px;
1547
+ height: 18px;
1548
+ fill: currentColor;
1544
1549
  }
1545
1550
 
1546
- /* Settings Menu */
1547
- .settings-menu {
1551
+ /* Settings Content */
1552
+ .plex-settings-content {
1548
1553
  padding: 8px 0;
1549
1554
  }
1550
1555
 
1551
1556
  /* Settings Item */
1552
- .settings-item {
1557
+ .plex-settings-item {
1553
1558
  display: flex;
1554
1559
  align-items: center;
1555
- gap: 12px;
1560
+ justify-content: space-between;
1556
1561
  padding: 12px 16px;
1557
1562
  cursor: pointer;
1558
1563
  transition: background var(--plex-transition-fast);
1559
1564
  }
1560
1565
 
1561
- .settings-item:hover {
1566
+ .plex-settings-item:hover {
1562
1567
  background: rgba(255, 255, 255, 0.05);
1563
1568
  }
1564
1569
 
1565
- .settings-item .material-icons:first-child {
1566
- font-size: 22px;
1567
- color: var(--plex-text-secondary);
1568
- }
1569
-
1570
- .settings-item-label {
1571
- flex: 1;
1570
+ .plex-settings-label {
1572
1571
  font-size: 14px;
1573
1572
  color: var(--plex-text-primary);
1574
1573
  }
1575
1574
 
1576
- .settings-item-value {
1575
+ .plex-settings-value {
1577
1576
  font-size: 13px;
1578
1577
  color: var(--plex-text-secondary);
1579
1578
  }
1580
1579
 
1581
- .settings-item .material-icons:last-child {
1582
- font-size: 20px;
1583
- color: var(--plex-text-secondary);
1584
- }
1585
-
1586
1580
  /* Settings Submenu */
1587
- .settings-submenu {
1581
+ .plex-settings-submenu {
1588
1582
  padding: 8px 0;
1589
1583
  }
1590
1584
 
1591
- /* Settings Option */
1592
- .settings-option {
1585
+ .plex-settings-back {
1593
1586
  display: flex;
1594
1587
  align-items: center;
1595
- justify-content: space-between;
1588
+ gap: 8px;
1596
1589
  padding: 12px 16px;
1597
- cursor: pointer;
1598
- transition: background var(--plex-transition-fast);
1599
1590
  font-size: 14px;
1591
+ font-weight: 600;
1600
1592
  color: var(--plex-text-primary);
1601
- }
1602
-
1603
- .settings-option:hover {
1604
- background: rgba(255, 255, 255, 0.05);
1605
- }
1606
-
1607
- .settings-option.active {
1608
- color: var(--plex-primary);
1609
- }
1610
-
1611
- .settings-option.active::after {
1612
- content: 'check';
1613
- font-family: 'Material Icons';
1614
- font-size: 20px;
1615
- color: var(--plex-primary);
1616
- }
1617
-
1618
- /* Toggle Switch */
1619
- .toggle-switch {
1620
- position: relative;
1621
- width: 44px;
1622
- height: 24px;
1623
- background: rgba(255, 255, 255, 0.2);
1624
- border-radius: 12px;
1625
1593
  cursor: pointer;
1594
+ border-bottom: 1px solid var(--plex-border);
1626
1595
  transition: background var(--plex-transition-fast);
1627
1596
  }
1628
1597
 
1629
- .toggle-switch.active {
1630
- background: var(--plex-primary);
1631
- }
1632
-
1633
- .toggle-slider {
1634
- position: absolute;
1635
- top: 2px;
1636
- left: 2px;
1637
- width: 20px;
1638
- height: 20px;
1639
- background: #fff;
1640
- border-radius: 50%;
1641
- transition: transform var(--plex-transition-fast);
1642
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1643
- }
1644
-
1645
- .toggle-switch.active .toggle-slider {
1646
- transform: translateX(20px);
1647
- }
1648
-
1649
- /* Subtitles Settings Panel */
1650
- .subtitles-settings-panel {
1651
- position: absolute;
1652
- bottom: 80px;
1653
- right: 20px;
1654
- width: 320px;
1655
- background: var(--plex-bg-dark);
1656
- border: 1px solid var(--plex-border);
1657
- border-radius: var(--plex-radius-lg);
1658
- box-shadow: var(--plex-shadow);
1659
- z-index: var(--plex-z-panel);
1660
- overflow: hidden;
1598
+ .plex-settings-back:hover {
1599
+ background: rgba(255, 255, 255, 0.05);
1661
1600
  }
1662
1601
 
1663
- .subtitles-settings-content {
1664
- padding: 16px;
1602
+ .plex-settings-back svg {
1603
+ width: 18px;
1604
+ height: 18px;
1605
+ fill: currentColor;
1665
1606
  }
1666
1607
 
1667
- /* Subtitle Setting Item */
1668
- .subtitle-setting-item {
1608
+ /* Speed Options */
1609
+ .plex-speed-options {
1669
1610
  display: flex;
1670
- align-items: center;
1671
- gap: 12px;
1672
- margin-bottom: 16px;
1673
- }
1674
-
1675
- .subtitle-setting-item label {
1676
- flex: 0 0 100px;
1677
- font-size: 13px;
1678
- color: var(--plex-text-secondary);
1679
- }
1680
-
1681
- .subtitle-setting-item input[type="range"] {
1682
- flex: 1;
1683
- -webkit-appearance: none;
1684
- appearance: none;
1685
- height: 4px;
1686
- background: rgba(255, 255, 255, 0.2);
1687
- border-radius: 2px;
1688
- outline: none;
1689
- }
1690
-
1691
- .subtitle-setting-item input[type="range"]::-webkit-slider-thumb {
1692
- -webkit-appearance: none;
1693
- appearance: none;
1694
- width: 16px;
1695
- height: 16px;
1696
- background: var(--plex-primary);
1697
- border-radius: 50%;
1698
- cursor: pointer;
1699
- }
1700
-
1701
- .subtitle-setting-item input[type="color"] {
1702
- -webkit-appearance: none;
1703
- appearance: none;
1704
- width: 40px;
1705
- height: 30px;
1706
- border: none;
1707
- border-radius: var(--plex-radius-sm);
1708
- cursor: pointer;
1709
- background: transparent;
1710
- }
1711
-
1712
- .subtitle-setting-item input[type="color"]::-webkit-color-swatch-wrapper {
1713
- padding: 0;
1714
- }
1715
-
1716
- .subtitle-setting-item input[type="color"]::-webkit-color-swatch {
1717
- border: 2px solid var(--plex-border);
1718
- border-radius: var(--plex-radius-sm);
1719
- }
1720
-
1721
- .subtitle-setting-item span:last-child {
1722
- flex: 0 0 50px;
1723
- text-align: right;
1724
- font-size: 13px;
1725
- color: var(--plex-text-primary);
1726
- font-weight: 500;
1611
+ flex-direction: column;
1612
+ padding: 8px 0;
1727
1613
  }
1728
1614
 
1729
- /* Subtitle Load Button */
1730
- .subtitle-load-btn {
1615
+ .plex-speed-option {
1731
1616
  display: flex;
1732
1617
  align-items: center;
1733
1618
  justify-content: center;
1734
- gap: 8px;
1735
- width: 100%;
1736
- padding: 12px;
1737
- margin-top: 8px;
1738
- background: rgba(255, 255, 255, 0.05);
1739
- border: 1px solid var(--plex-border);
1740
- border-radius: var(--plex-radius-md);
1741
- color: var(--plex-text-primary);
1619
+ padding: 10px 16px;
1620
+ background: transparent;
1621
+ border: none;
1742
1622
  font-size: 14px;
1623
+ color: var(--plex-text-primary);
1743
1624
  cursor: pointer;
1744
1625
  transition: all var(--plex-transition-fast);
1745
1626
  }
1746
1627
 
1747
- .subtitle-load-btn:hover {
1748
- background: rgba(255, 255, 255, 0.1);
1749
- border-color: var(--plex-primary);
1750
- }
1751
-
1752
- .subtitle-load-btn .material-icons {
1753
- font-size: 20px;
1754
- }
1755
-
1756
- /* Speed Panel (Alternative) */
1757
- .speed-panel {
1758
- position: absolute;
1759
- bottom: 80px;
1760
- right: 60px;
1761
- width: 200px;
1762
- background: var(--plex-bg-dark);
1763
- border: 1px solid var(--plex-border);
1764
- border-radius: var(--plex-radius-lg);
1765
- box-shadow: var(--plex-shadow);
1766
- z-index: var(--plex-z-panel);
1767
- overflow: hidden;
1768
- padding: 8px 0;
1769
- }
1770
-
1771
- /* Quality Badge */
1772
- .quality-badge {
1773
- display: inline-flex;
1774
- align-items: center;
1775
- justify-content: center;
1776
- padding: 2px 6px;
1777
- background: var(--plex-primary);
1778
- border-radius: 3px;
1779
- font-size: 10px;
1780
- font-weight: 700;
1781
- color: #000;
1782
- text-transform: uppercase;
1783
- margin-left: 8px;
1784
- }
1785
-
1786
- /* Section Divider */
1787
- .settings-divider {
1788
- height: 1px;
1789
- background: var(--plex-border);
1790
- margin: 8px 16px;
1628
+ .plex-speed-option:hover {
1629
+ background: rgba(255, 255, 255, 0.05);
1791
1630
  }
1792
1631
 
1793
- /* Settings Group Label */
1794
- .settings-group-label {
1795
- padding: 8px 16px 4px;
1796
- font-size: 11px;
1632
+ .plex-speed-option.active {
1633
+ color: var(--plex-primary);
1797
1634
  font-weight: 600;
1798
- color: var(--plex-text-secondary);
1799
- text-transform: uppercase;
1800
- letter-spacing: 0.5px;
1801
1635
  }
1802
1636
 
1803
- /* Responsive Settings */
1804
- @media (max-width: 768px) {
1805
- .settings-panel {
1806
- position: fixed;
1807
- top: auto;
1808
- bottom: 0;
1809
- left: 0;
1810
- right: 0;
1811
- width: 100%;
1812
- max-height: 60vh;
1813
- border-radius: var(--plex-radius-lg) var(--plex-radius-lg) 0 0;
1814
- transform-origin: bottom center;
1815
- }
1816
-
1817
- .subtitles-settings-panel {
1818
- position: fixed;
1819
- top: auto;
1820
- bottom: 0;
1821
- left: 0;
1822
- right: 0;
1823
- width: 100%;
1824
- max-height: 70vh;
1825
- border-radius: var(--plex-radius-lg) var(--plex-radius-lg) 0 0;
1826
- }
1827
-
1828
- .settings-item {
1829
- padding: 14px 20px;
1830
- }
1831
-
1832
- .settings-option {
1833
- padding: 14px 20px;
1834
- }
1637
+ .plex-speed-option.active::before {
1638
+ content: '✓';
1639
+ margin-right: 8px;
1835
1640
  }
1836
1641
 
1642
+ /* Responsive */
1837
1643
  @media (max-width: 480px) {
1838
- .settings-content {
1839
- max-height: 50vh;
1840
- }
1841
-
1842
- .subtitle-setting-item {
1843
- flex-wrap: wrap;
1644
+ .plex-settings-panel {
1645
+ width: calc(100% - 32px);
1646
+ left: 16px;
1647
+ right: 16px;
1844
1648
  }
1845
-
1846
- .subtitle-setting-item label {
1847
- flex: 0 0 100%;
1848
- margin-bottom: 8px;
1849
- }
1850
-
1851
- .subtitle-setting-item input[type="range"] {
1852
- flex: 1;
1853
- }
1854
- }
1855
-
1856
- /* Animation for panel open/close */
1857
- .settings-panel.closing {
1858
- animation: settingsClose 0.15s ease forwards;
1859
- }
1860
-
1861
- @keyframes settingsClose {
1862
- from {
1863
- opacity: 1;
1864
- transform: scale(1);
1865
- }
1866
- to {
1867
- opacity: 0;
1868
- transform: scale(0.95);
1869
- }
1870
- }
1871
-
1872
- /* Keyboard Shortcut Hints */
1873
- .shortcut-hint {
1874
- display: inline-flex;
1875
- align-items: center;
1876
- justify-content: center;
1877
- min-width: 24px;
1878
- height: 24px;
1879
- padding: 0 6px;
1880
- background: rgba(255, 255, 255, 0.1);
1881
- border: 1px solid var(--plex-border);
1882
- border-radius: 4px;
1883
- font-size: 11px;
1884
- font-weight: 600;
1885
- color: var(--plex-text-secondary);
1886
- margin-left: auto;
1887
- }
1888
-
1889
- /* Audio Track Indicator */
1890
- .audio-track-indicator {
1891
- display: flex;
1892
- align-items: center;
1893
- gap: 4px;
1894
- font-size: 12px;
1895
- color: var(--plex-text-secondary);
1896
- }
1897
-
1898
- .audio-track-indicator .material-icons {
1899
- font-size: 16px;
1900
1649
  }
1901
1650
 
1902
1651
  /*# sourceMappingURL=plex-player.css.map */