mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-08 09:01:03 -08:00
221 lines
4.4 KiB
SCSS
221 lines
4.4 KiB
SCSS
@use '@angular/material' as mat;
|
|
|
|
:host {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
display: block;
|
|
}
|
|
|
|
.itv-container {
|
|
display: grid;
|
|
// Use auto for sidebar to respect the directive's width
|
|
grid-template-columns: auto 1fr 1fr;
|
|
grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
|
|
gap: 0 0;
|
|
grid-auto-flow: row;
|
|
grid-template-areas:
|
|
'sidebar video-player video-player'
|
|
'sidebar epg epg';
|
|
height: 100%;
|
|
}
|
|
|
|
.itv-container--epg-collapsed {
|
|
grid-template-rows: minmax(0, 1fr) 56px;
|
|
}
|
|
|
|
.itv-container-epg {
|
|
display: grid;
|
|
// Use auto for sidebar to respect the directive's width
|
|
grid-template-columns: auto 1fr 1fr;
|
|
grid-template-rows: repeat(3, minmax(0, 1fr));
|
|
gap: 0 0;
|
|
grid-auto-flow: row;
|
|
grid-template-areas:
|
|
'sidebar epg epg'
|
|
'sidebar epg epg'
|
|
'sidebar epg epg';
|
|
height: 100%;
|
|
}
|
|
|
|
.sidebar {
|
|
grid-area: sidebar;
|
|
// Default width (controlled by resizable directive)
|
|
width: 400px;
|
|
min-width: 250px;
|
|
max-width: 600px;
|
|
flex-shrink: 0;
|
|
position: relative;
|
|
border-right: 1px solid #333;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.video-player {
|
|
grid-area: video-player;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
display: flex;
|
|
}
|
|
|
|
.video-player > app-web-player-view {
|
|
flex: 1;
|
|
min-height: 0;
|
|
}
|
|
|
|
.epg {
|
|
grid-area: epg;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
|
|
&.epg-collapsed {
|
|
min-height: 56px;
|
|
}
|
|
}
|
|
|
|
.search-panel {
|
|
margin-top: 10px;
|
|
display: flex;
|
|
justify-content: center;
|
|
margin-bottom: -15px;
|
|
}
|
|
|
|
.search-bar {
|
|
width: 90%;
|
|
@include mat.form-field-density(-5);
|
|
}
|
|
|
|
.epg-content {
|
|
height: 100%;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border-right: #111 1px solid;
|
|
}
|
|
|
|
.epg-content > app-epg-view {
|
|
flex: 1;
|
|
min-height: 0;
|
|
}
|
|
|
|
.epg > app-live-epg-panel {
|
|
flex: 1;
|
|
min-height: 0;
|
|
}
|
|
|
|
.sidebar-content {
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
border-right: #111 1px solid;
|
|
overflow-x: hidden;
|
|
}
|
|
|
|
.no-channel-selected {
|
|
margin: 10px;
|
|
}
|
|
|
|
::ng-deep {
|
|
.search-bar {
|
|
div {
|
|
border-radius: 20px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.nav-list {
|
|
flex: 1;
|
|
overflow-y: hidden;
|
|
padding: 0 8px 12px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.nav-item {
|
|
position: relative;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 6px 10px;
|
|
border: 1px solid transparent;
|
|
border-radius: 10px;
|
|
background: transparent;
|
|
color: var(--mat-sys-on-surface-variant);
|
|
text-align: left;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
box-sizing: border-box;
|
|
transition:
|
|
background 0.15s ease,
|
|
color 0.15s ease,
|
|
border-color 0.15s ease,
|
|
box-shadow 0.18s ease,
|
|
transform 0.18s ease;
|
|
|
|
.stream-icon {
|
|
width: 36px;
|
|
height: 36px;
|
|
border-radius: 4px;
|
|
object-fit: cover;
|
|
flex-shrink: 0;
|
|
background: color-mix(
|
|
in srgb,
|
|
var(--mat-sys-on-surface) 5%,
|
|
transparent
|
|
);
|
|
}
|
|
|
|
span,
|
|
.title {
|
|
line-height: 1.2;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
&:hover {
|
|
background: var(--mat-sys-surface-container);
|
|
color: var(--mat-sys-on-surface);
|
|
}
|
|
|
|
&.selected,
|
|
&.active {
|
|
background: linear-gradient(
|
|
135deg,
|
|
var(--app-selection-surface-strong),
|
|
var(--app-selection-surface)
|
|
) !important;
|
|
color: var(--app-selection-color) !important;
|
|
border-color: var(--app-selection-border) !important;
|
|
font-weight: 600;
|
|
box-shadow:
|
|
inset 0 0 0 1px var(--app-selection-border),
|
|
0 12px 20px -18px var(--app-selection-glow);
|
|
transform: translateY(-1px);
|
|
|
|
* {
|
|
color: var(--app-selection-color) !important;
|
|
}
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset-inline-start: 6px;
|
|
top: 7px;
|
|
bottom: 7px;
|
|
width: 3px;
|
|
border-radius: 999px;
|
|
background: var(--app-selection-color);
|
|
box-shadow: 0 0 10px var(--app-selection-glow);
|
|
}
|
|
}
|
|
}
|