prismcast 1.4.1 → 1.5.0
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/app.js +18 -1
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.d.ts +2 -1
- package/dist/browser/cdp.js +44 -23
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +45 -1
- package/dist/browser/channelSelection.js +164 -27
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +0 -4
- package/dist/browser/display.js +0 -7
- package/dist/browser/display.js.map +1 -1
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/precaching.d.ts +5 -0
- package/dist/browser/precaching.js +112 -0
- package/dist/browser/precaching.js.map +1 -0
- package/dist/browser/tuning/directv.d.ts +2 -0
- package/dist/browser/tuning/directv.js +723 -0
- package/dist/browser/tuning/directv.js.map +1 -0
- package/dist/browser/tuning/fox.d.ts +2 -2
- package/dist/browser/tuning/fox.js +141 -22
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +2 -2
- package/dist/browser/tuning/hbo.js +110 -41
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +2 -2
- package/dist/browser/tuning/hulu.js +537 -211
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/sling.d.ts +2 -2
- package/dist/browser/tuning/sling.js +200 -56
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +2 -2
- package/dist/browser/tuning/youtubeTv.js +243 -57
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +1 -1
- package/dist/browser/video.js +4 -2
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.js +280 -34
- package/dist/channels/index.js.map +1 -1
- package/dist/config/health.d.ts +78 -0
- package/dist/config/health.js +202 -0
- package/dist/config/health.js.map +1 -0
- package/dist/config/paths.d.ts +10 -0
- package/dist/config/paths.js +14 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +6 -4
- package/dist/config/profiles.js +65 -14
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerPacks.d.ts +46 -0
- package/dist/config/providerPacks.js +200 -0
- package/dist/config/providerPacks.js.map +1 -0
- package/dist/config/providers.d.ts +47 -6
- package/dist/config/providers.js +211 -17
- package/dist/config/providers.js.map +1 -1
- package/dist/config/sites.d.ts +1 -12
- package/dist/config/sites.js +40 -7
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +41 -19
- package/dist/config/userChannels.js +152 -35
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +5 -1
- package/dist/config/userConfig.js +58 -6
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +81 -0
- package/dist/config/userProfiles.js +424 -0
- package/dist/config/userProfiles.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -0
- package/dist/routes/config/channels/index.js +3 -0
- package/dist/routes/config/channels/index.js.map +1 -0
- package/dist/routes/config/channels/routes.d.ts +6 -0
- package/dist/routes/config/channels/routes.js +797 -0
- package/dist/routes/config/channels/routes.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +46 -0
- package/dist/routes/config/channels/table.js +811 -0
- package/dist/routes/config/channels/table.js.map +1 -0
- package/dist/routes/config/index.d.ts +37 -0
- package/dist/routes/config/index.js +81 -0
- package/dist/routes/config/index.js.map +1 -0
- package/dist/routes/config/providers.d.ts +18 -0
- package/dist/routes/config/providers.js +573 -0
- package/dist/routes/config/providers.js.map +1 -0
- package/dist/routes/config/settings.d.ts +39 -0
- package/dist/routes/config/settings.js +820 -0
- package/dist/routes/config/settings.js.map +1 -0
- package/dist/routes/index.d.ts +3 -2
- package/dist/routes/index.js +7 -4
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/playlist.d.ts +5 -1
- package/dist/routes/playlist.js +32 -7
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/providers.d.ts +6 -0
- package/dist/routes/providers.js +166 -0
- package/dist/routes/providers.js.map +1 -0
- package/dist/routes/root/content.d.ts +32 -0
- package/dist/routes/root/content.js +857 -0
- package/dist/routes/root/content.js.map +1 -0
- package/dist/routes/root/index.js +197 -0
- package/dist/routes/root/index.js.map +1 -0
- package/dist/routes/root/scripts/channels.d.ts +1 -0
- package/dist/routes/root/scripts/channels.js +745 -0
- package/dist/routes/root/scripts/channels.js.map +1 -0
- package/dist/routes/root/scripts/config.d.ts +1 -0
- package/dist/routes/root/scripts/config.js +1662 -0
- package/dist/routes/root/scripts/config.js.map +1 -0
- package/dist/routes/root/scripts/index.d.ts +3 -0
- package/dist/routes/root/scripts/index.js +8 -0
- package/dist/routes/root/scripts/index.js.map +1 -0
- package/dist/routes/root/scripts/status.d.ts +1 -0
- package/dist/routes/root/scripts/status.js +436 -0
- package/dist/routes/root/scripts/status.js.map +1 -0
- package/dist/routes/root/styles.d.ts +5 -0
- package/dist/routes/root/styles.js +447 -0
- package/dist/routes/root/styles.js.map +1 -0
- package/dist/routes/theme.js +7 -1
- package/dist/routes/theme.js.map +1 -1
- package/dist/routes/ui.js +8 -3
- package/dist/routes/ui.js.map +1 -1
- package/dist/service/commands.d.ts +5 -3
- package/dist/service/commands.js +117 -33
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.d.ts +27 -0
- package/dist/service/generators.js +97 -6
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/hls.js +18 -1
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/lifecycle.js +1 -1
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +1 -38
- package/dist/streaming/monitor.js +2 -289
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/recovery.d.ts +143 -0
- package/dist/streaming/recovery.js +286 -0
- package/dist/streaming/recovery.js.map +1 -0
- package/dist/streaming/registry.d.ts +1 -1
- package/dist/streaming/setup.d.ts +1 -1
- package/dist/streaming/setup.js +3 -1
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.js +12 -14
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -2
- package/dist/streaming/statusEmitter.js +5 -0
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +68 -0
- package/dist/types/channels.js +2 -0
- package/dist/types/channels.js.map +1 -0
- package/dist/types/config.d.ts +127 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +7 -406
- package/dist/types/index.js +1 -5
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +141 -0
- package/dist/types/profiles.js +2 -0
- package/dist/types/profiles.js.map +1 -0
- package/dist/types/selection.d.ts +101 -0
- package/dist/types/selection.js +6 -0
- package/dist/types/selection.js.map +1 -0
- package/dist/types/shared.d.ts +7 -0
- package/dist/types/shared.js +6 -0
- package/dist/types/shared.js.map +1 -0
- package/dist/types/streaming.d.ts +96 -0
- package/dist/types/streaming.js +2 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/utils/debugFilter.js +3 -1
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/format.d.ts +7 -0
- package/dist/utils/format.js +22 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/sanitize.d.ts +14 -0
- package/dist/utils/sanitize.js +37 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/package.json +6 -4
- package/dist/routes/config.d.ts +0 -72
- package/dist/routes/config.js +0 -1987
- package/dist/routes/config.js.map +0 -1
- package/dist/routes/root.js +0 -2959
- package/dist/routes/root.js.map +0 -1
- /package/dist/routes/{root.d.ts → root/index.d.ts} +0 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
/* Copyright(C) 2024-2026, HJD (https://github.com/hjdhjd). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* styles.ts: Landing page CSS generator for PrismCast.
|
|
4
|
+
*/
|
|
5
|
+
import { OPTIONAL_COLUMNS } from "../config/index.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generates additional CSS styles specific to the landing page. Uses CSS custom properties for theme support.
|
|
8
|
+
* @returns CSS styles as a string.
|
|
9
|
+
*/
|
|
10
|
+
export function generateLandingPageStyles() {
|
|
11
|
+
return [
|
|
12
|
+
// Override header to use space-between for logo/title on left and status on right.
|
|
13
|
+
".header { justify-content: space-between; }",
|
|
14
|
+
".header-left { display: flex; align-items: center; gap: 20px; }",
|
|
15
|
+
// Header links (GitHub, More by HJD).
|
|
16
|
+
".header-links { display: flex; align-items: center; gap: 8px; font-size: 13px; }",
|
|
17
|
+
".header-links a { color: var(--text-muted); text-decoration: none; transition: color 0.2s; }",
|
|
18
|
+
".header-links a:hover { color: var(--text-primary); }",
|
|
19
|
+
".header-links-sep { color: var(--text-muted); }",
|
|
20
|
+
// Header status bar styles.
|
|
21
|
+
".header-status { display: flex; gap: 20px; align-items: center; font-size: 13px; color: var(--text-secondary); }",
|
|
22
|
+
".header-status span { white-space: nowrap; }",
|
|
23
|
+
// Stream count popover. Clickable when streams are active; popover drops from the right edge of the header.
|
|
24
|
+
"#stream-count { background: none; border: none; color: inherit; font: inherit; padding: 0; }",
|
|
25
|
+
"#stream-count.clickable { cursor: pointer; }",
|
|
26
|
+
"#stream-count.clickable:hover { color: var(--text-primary); }",
|
|
27
|
+
".stream-popover .dropdown-menu { right: 0; left: auto; min-width: 220px; }",
|
|
28
|
+
".stream-popover-row { display: flex; align-items: center; gap: 8px; padding: 6px 12px; font-size: 13px; white-space: nowrap; }",
|
|
29
|
+
".stream-popover-logo { height: 18px; width: auto; max-width: 80px; vertical-align: middle; }",
|
|
30
|
+
".stream-popover-channel { color: var(--text-primary); }",
|
|
31
|
+
".stream-popover-show { color: var(--text-muted); }",
|
|
32
|
+
".stream-popover-duration { color: var(--text-muted); margin-left: auto; }",
|
|
33
|
+
// Subtab styles for Configuration tab.
|
|
34
|
+
".subtab-bar { display: flex; border-bottom: 1px solid var(--border-default); margin-bottom: 20px; gap: 2px; flex-wrap: wrap; }",
|
|
35
|
+
".subtab-btn { padding: 8px 16px; border: none; background: var(--subtab-bg); cursor: pointer; font-size: 13px; font-weight: 500; ",
|
|
36
|
+
"color: var(--tab-text); border-radius: var(--radius-md) var(--radius-md) 0 0; transition: all 0.2s; }",
|
|
37
|
+
".subtab-btn:hover { background: var(--subtab-bg-hover); color: var(--tab-text-hover); }",
|
|
38
|
+
".subtab-btn.active { background: var(--subtab-bg-active); color: var(--subtab-text-active); border-bottom: 2px solid var(--subtab-border-active); }",
|
|
39
|
+
".subtab-panel { display: none; }",
|
|
40
|
+
".subtab-panel.active { display: block; }",
|
|
41
|
+
// Channels tab subtab styles. Scoped to avoid collision with Configuration tab subtabs.
|
|
42
|
+
".channels-subtab-bar { display: flex; border-bottom: 1px solid var(--border-default); margin-bottom: 20px; gap: 2px; flex-wrap: wrap; }",
|
|
43
|
+
".channels-subtab-btn { padding: 8px 16px; border: none; background: var(--subtab-bg); cursor: pointer; font-size: 13px; font-weight: 500; ",
|
|
44
|
+
"color: var(--tab-text); border-radius: var(--radius-md) var(--radius-md) 0 0; transition: all 0.2s; }",
|
|
45
|
+
".channels-subtab-btn:hover { background: var(--subtab-bg-hover); color: var(--tab-text-hover); }",
|
|
46
|
+
".channels-subtab-btn.active { background: var(--subtab-bg-active); color: var(--subtab-text-active); ",
|
|
47
|
+
"border-bottom: 2px solid var(--subtab-border-active); }",
|
|
48
|
+
".channels-subtab-panel { display: none; }",
|
|
49
|
+
".channels-subtab-panel.active { display: block; }",
|
|
50
|
+
// Empty state styling for Providers panel.
|
|
51
|
+
".empty-state { text-align: center; padding: 40px 20px; color: var(--text-secondary); }",
|
|
52
|
+
".empty-state-title { font-size: 16px; font-weight: 600; color: var(--text-primary); margin: 0 0 8px 0; }",
|
|
53
|
+
".empty-state-text { font-size: 14px; margin: 0; max-width: 500px; margin-left: auto; margin-right: auto; line-height: 1.5; }",
|
|
54
|
+
// Wizard modal styles.
|
|
55
|
+
".wizard-modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; ",
|
|
56
|
+
"justify-content: center; align-items: center; }",
|
|
57
|
+
".wizard-modal-content { background: var(--surface-overlay); border-radius: var(--radius-lg); box-shadow: 0 8px 32px rgba(0,0,0,0.3); ",
|
|
58
|
+
"width: 640px; max-width: 90vw; max-height: 85vh; display: flex; flex-direction: column; overflow: hidden; }",
|
|
59
|
+
".wizard-header { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; ",
|
|
60
|
+
"border-bottom: 1px solid var(--border-default); }",
|
|
61
|
+
".wizard-header h3 { margin: 0; font-size: 18px; color: var(--text-heading); }",
|
|
62
|
+
".wizard-close { background: none; border: none; font-size: 20px; cursor: pointer; color: var(--text-muted); padding: 4px 8px; }",
|
|
63
|
+
".wizard-close:hover { color: var(--text-primary); }",
|
|
64
|
+
// Step indicator.
|
|
65
|
+
".wizard-steps { display: flex; align-items: center; justify-content: center; padding: 16px 20px; gap: 4px; }",
|
|
66
|
+
".wizard-step { display: flex; flex-direction: column; align-items: center; gap: 4px; }",
|
|
67
|
+
".wizard-step-line { width: 32px; height: 2px; background: var(--border-default); margin-bottom: 18px; }",
|
|
68
|
+
".step-circle { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; ",
|
|
69
|
+
"font-size: 13px; font-weight: 600; border: 2px solid var(--border-default); color: var(--text-muted); background: var(--surface-overlay); }",
|
|
70
|
+
".wizard-step.active .step-circle { border-color: var(--interactive-primary); color: var(--interactive-primary); background: var(--surface-overlay); }",
|
|
71
|
+
".wizard-step.completed .step-circle { border-color: var(--interactive-primary); color: #fff; background: var(--interactive-primary); }",
|
|
72
|
+
".step-label { font-size: 11px; color: var(--text-muted); }",
|
|
73
|
+
".wizard-step.active .step-label { color: var(--interactive-primary); font-weight: 600; }",
|
|
74
|
+
".wizard-step.clickable { cursor: pointer; }",
|
|
75
|
+
".wizard-step.clickable:not(.completed) .step-circle:hover { border-color: var(--interactive-primary); color: var(--interactive-primary); }",
|
|
76
|
+
// Wizard content area.
|
|
77
|
+
".wizard-content { padding: 20px; overflow-y: auto; flex: 1; min-height: 300px; }",
|
|
78
|
+
".wizard-content label { display: block; margin-bottom: 6px; font-weight: 500; color: var(--text-primary); font-size: 14px; }",
|
|
79
|
+
".wizard-content input[type=\"text\"], .wizard-content textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--border-default); ",
|
|
80
|
+
"border-radius: var(--radius-md); font-size: 14px; font-family: inherit; background: var(--surface-overlay); color: var(--text-primary); ",
|
|
81
|
+
"box-sizing: border-box; }",
|
|
82
|
+
".wizard-content input[type=\"text\"]:focus, .wizard-content textarea:focus { outline: none; border-color: var(--interactive-primary); }",
|
|
83
|
+
".wizard-content textarea { resize: vertical; min-height: 60px; }",
|
|
84
|
+
".wizard-content .field-hint { font-size: 12px; color: var(--text-muted); margin-top: 4px; margin-bottom: 12px; }",
|
|
85
|
+
".wizard-content .field-group { margin-bottom: 16px; }",
|
|
86
|
+
// Wizard profile radio buttons.
|
|
87
|
+
".wizard-profile-category { margin-bottom: 16px; }",
|
|
88
|
+
".wizard-profile-category h4 { font-size: 13px; color: var(--text-secondary); margin: 0 0 4px 0; text-transform: uppercase; letter-spacing: 0.5px; }",
|
|
89
|
+
".wizard-category-desc { font-size: 12px; color: var(--text-muted); margin-bottom: 8px; }",
|
|
90
|
+
".wizard-content label.wizard-profile-option { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; ",
|
|
91
|
+
"border: 1px solid var(--border-default); border-radius: var(--radius-md); margin-bottom: 4px; cursor: pointer; }",
|
|
92
|
+
".wizard-profile-option:hover { background: var(--surface-hover); }",
|
|
93
|
+
".wizard-profile-option input[type=\"radio\"] { margin-top: 5px; flex-shrink: 0; }",
|
|
94
|
+
".wizard-profile-option .profile-option-name { font-weight: 500; font-size: 14px; color: var(--text-primary); }",
|
|
95
|
+
".wizard-profile-option .profile-option-summary { font-weight: 400; font-size: 12px; color: var(--text-muted); }",
|
|
96
|
+
".wizard-profile-option .profile-option-desc { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }",
|
|
97
|
+
// Wizard strategy radio buttons.
|
|
98
|
+
".wizard-content label.wizard-strategy-option { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; ",
|
|
99
|
+
"border: 1px solid var(--border-default); border-radius: var(--radius-md); margin-bottom: 6px; cursor: pointer; }",
|
|
100
|
+
".wizard-strategy-option:hover { background: var(--surface-hover); }",
|
|
101
|
+
".wizard-strategy-option input[type=\"radio\"] { margin-top: 5px; flex-shrink: 0; }",
|
|
102
|
+
".wizard-strategy-label { font-weight: 500; font-size: 14px; color: var(--text-primary); }",
|
|
103
|
+
".wizard-strategy-desc { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }",
|
|
104
|
+
// Wizard flag checkboxes.
|
|
105
|
+
".wizard-content label.wizard-flag { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; margin-bottom: 4px; }",
|
|
106
|
+
".wizard-flag input[type=\"checkbox\"] { margin-top: 5px; flex-shrink: 0; }",
|
|
107
|
+
".wizard-flag-label { font-size: 14px; color: var(--text-primary); }",
|
|
108
|
+
".wizard-flag-desc { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }",
|
|
109
|
+
// Wizard review summary.
|
|
110
|
+
".wizard-review-table { width: 100%; border-collapse: collapse; font-size: 14px; }",
|
|
111
|
+
".wizard-review-table td { padding: 6px 8px; border-bottom: 1px solid var(--border-default); }",
|
|
112
|
+
".wizard-review-table td:first-child { font-weight: 500; color: var(--text-secondary); width: 120px; white-space: nowrap; }",
|
|
113
|
+
// Wizard validation error.
|
|
114
|
+
".wizard-error { padding: 0 20px; color: var(--status-error-text); font-size: 13px; }",
|
|
115
|
+
// Wizard buttons.
|
|
116
|
+
".wizard-buttons { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; ",
|
|
117
|
+
"border-top: 1px solid var(--border-default); }",
|
|
118
|
+
".wizard-buttons-right { display: flex; gap: 8px; }",
|
|
119
|
+
// Domain row for adding multiple domains.
|
|
120
|
+
".wizard-domain-row { border: 1px solid var(--border-default); border-radius: var(--radius-md); padding: 12px; margin-bottom: 8px; }",
|
|
121
|
+
".wizard-domain-row .field-group:last-child { margin-bottom: 0; }",
|
|
122
|
+
".wizard-add-domain { background: none; border: none; color: var(--interactive-primary); cursor: pointer; font-size: 13px; padding: 4px 0; }",
|
|
123
|
+
".wizard-add-domain:hover { text-decoration: underline; }",
|
|
124
|
+
// Export and import modal styles: body area, profile list items, section header, and option labels.
|
|
125
|
+
".export-modal-body { padding: 20px; overflow-y: auto; font-size: 14px; }",
|
|
126
|
+
".export-section-header { margin-bottom: 12px; font-weight: 500; }",
|
|
127
|
+
".export-option-label { display: flex; align-items: center; gap: 8px; cursor: pointer; }",
|
|
128
|
+
".export-profile-item { display: flex; align-items: center; gap: 10px; padding: 8px 10px; margin-bottom: 4px; ",
|
|
129
|
+
"border: 1px solid var(--border-default); border-radius: var(--radius-md); cursor: pointer; }",
|
|
130
|
+
".export-profile-item:hover { background: var(--surface-hover); }",
|
|
131
|
+
".export-profile-info { min-width: 0; }",
|
|
132
|
+
".export-profile-name { font-weight: 600; font-size: 14px; }",
|
|
133
|
+
".export-profile-meta { font-size: 12px; color: var(--text-muted); }",
|
|
134
|
+
".export-divider { border-top: 1px solid var(--border-default); margin: 16px 0; }",
|
|
135
|
+
".export-hint { font-size: 12px; color: var(--text-muted); margin-top: 6px; margin-left: 24px; }",
|
|
136
|
+
".import-summary-table { width: 100%; font-size: 13px; margin: 12px 0; }",
|
|
137
|
+
".import-summary-table td { padding: 4px 0; }",
|
|
138
|
+
".import-summary-label { color: var(--text-muted); }",
|
|
139
|
+
// Panel header layout for description and reset link alignment.
|
|
140
|
+
".panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }",
|
|
141
|
+
// Settings panel description styling (replaces redundant header titles).
|
|
142
|
+
".settings-panel-description { margin: 0; font-size: 15px; color: var(--text-primary); }",
|
|
143
|
+
".settings-panel-description p { margin: 0; }",
|
|
144
|
+
".description-hint { font-size: 13px; color: var(--text-secondary); margin-top: 4px; }",
|
|
145
|
+
// Streams table container - outer border with rounded corners.
|
|
146
|
+
"#streams-container { border: 1px solid var(--border-default); border-radius: var(--radius-md); overflow: hidden; margin-bottom: 20px; }",
|
|
147
|
+
// Streams table - minimal design with no borders between columns.
|
|
148
|
+
".streams-table { width: 100%; border-collapse: collapse; margin: 0; }",
|
|
149
|
+
".streams-table td { padding: 6px 10px; border: none; color: var(--text-primary); vertical-align: middle; }",
|
|
150
|
+
".streams-table td:first-child { padding-left: 12px; }",
|
|
151
|
+
".streams-table td:last-child { padding-right: 12px; }",
|
|
152
|
+
".streams-table .empty-row td { padding: 10px 12px; text-align: center; color: var(--text-muted); }",
|
|
153
|
+
".streams-table .empty-row:hover { background: transparent; }",
|
|
154
|
+
".streams-table .stream-row { cursor: pointer; }",
|
|
155
|
+
".streams-table .stream-row:hover { background: var(--table-row-hover); }",
|
|
156
|
+
".streams-table .chevron { width: 20px; color: var(--text-muted); font-size: 10px; }",
|
|
157
|
+
".streams-table .stream-info { width: 180px; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; font-size: 13px; }",
|
|
158
|
+
".streams-table .stream-duration { font-weight: 400; color: var(--text-secondary); }",
|
|
159
|
+
".streams-table .channel-logo { height: 24px; width: auto; max-width: 100px; vertical-align: middle; margin-right: 4px; }",
|
|
160
|
+
".streams-table .channel-text { vertical-align: middle; }",
|
|
161
|
+
".streams-table .stream-show { max-width: 250px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-secondary); font-size: 13px; }",
|
|
162
|
+
".streams-table .stream-health { text-align: right; white-space: nowrap; font-size: 13px; }",
|
|
163
|
+
".streams-table .stream-details td { padding: 10px 12px 12px 32px; background: var(--surface-sunken); }",
|
|
164
|
+
".streams-table .details-content { font-size: 12px; color: var(--text-secondary); }",
|
|
165
|
+
".streams-table .details-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; margin-bottom: 10px; }",
|
|
166
|
+
".streams-table .details-url { word-break: break-all; flex: 1; min-width: 0; }",
|
|
167
|
+
".streams-table .details-started { white-space: nowrap; flex-shrink: 0; }",
|
|
168
|
+
".streams-table .details-metrics { display: flex; align-items: baseline; gap: 20px; }",
|
|
169
|
+
".streams-table .details-issue { flex: 1; min-width: 0; }",
|
|
170
|
+
".streams-table .details-recovery { white-space: nowrap; flex-shrink: 0; }",
|
|
171
|
+
".streams-table .details-memory { white-space: nowrap; flex-shrink: 0; }",
|
|
172
|
+
".streams-table .client-count { font-size: 0.85em; color: var(--text-muted); margin-right: 8px; white-space: nowrap; }",
|
|
173
|
+
// Log viewer styles.
|
|
174
|
+
".log-viewer { background: var(--dark-surface-bg); color: var(--dark-text-secondary); padding: 15px; border-radius: var(--radius-lg); ",
|
|
175
|
+
"font-family: 'SF Mono', Monaco, monospace; font-size: 12px; height: 500px; overflow-y: auto; white-space: pre-wrap; word-break: break-all; }",
|
|
176
|
+
".log-viewer::-webkit-scrollbar { width: 8px; }",
|
|
177
|
+
".log-viewer::-webkit-scrollbar-track { background: var(--dark-scrollbar-track); }",
|
|
178
|
+
".log-viewer::-webkit-scrollbar-thumb { background: var(--dark-scrollbar-thumb); border-radius: var(--radius-md); }",
|
|
179
|
+
".log-viewer::-webkit-scrollbar-thumb:hover { background: var(--dark-scrollbar-thumb-hover); }",
|
|
180
|
+
".log-entry { color: var(--dark-text-secondary); }",
|
|
181
|
+
".log-error { color: var(--dark-text-error); }",
|
|
182
|
+
".log-warn { color: var(--dark-text-warn); }",
|
|
183
|
+
".log-debug { color: var(--dark-text-debug); }",
|
|
184
|
+
".log-muted { color: var(--dark-text-muted); }",
|
|
185
|
+
".log-connecting { color: var(--dark-text-muted); }",
|
|
186
|
+
// Channel table styles. The wrapper uses fit-content so it shrinks when columns are hidden, with max-width: 100% to prevent viewport overflow. We use
|
|
187
|
+
// border-collapse: separate so that border-radius works on the header cells. Overflow is auto so the table scrolls on narrow screens; dropdown menus escape
|
|
188
|
+
// the container via portal to <body>.
|
|
189
|
+
".channel-table-wrapper { width: fit-content; max-width: 100%; margin: 0 auto 20px; border: 1px solid var(--border-default); " +
|
|
190
|
+
"border-radius: var(--radius-lg); overflow: auto; }",
|
|
191
|
+
".channel-table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: auto; min-width: 650px; margin: 0; }",
|
|
192
|
+
".channel-table th, .channel-table td { padding: 10px 12px; text-align: left; border: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }",
|
|
193
|
+
".channel-table th { background: var(--table-header-bg); font-weight: 600; font-size: 13px; border-bottom: 1px solid var(--border-default); }",
|
|
194
|
+
".channel-table tbody tr:nth-child(even):not(.user-channel) { background: var(--table-row-even); }",
|
|
195
|
+
".channel-table tr:hover { background: var(--table-row-hover); }",
|
|
196
|
+
".channel-table .col-key { min-width: 170px; }",
|
|
197
|
+
".channel-table .col-name { min-width: 200px; }",
|
|
198
|
+
".channel-table .col-provider { min-width: 200px; }",
|
|
199
|
+
".channel-table .col-actions, .channel-table td:last-child { min-width: 168px; white-space: nowrap; overflow: visible; }",
|
|
200
|
+
".provider-select { width: 100%; padding: 2px 4px; font-size: 12px; border: 1px solid var(--form-input-border); ",
|
|
201
|
+
"border-radius: 3px; background: var(--form-input-bg); color: var(--text-primary); }",
|
|
202
|
+
// Optional column width, alignment, and visibility rules. Generated from OPTIONAL_COLUMNS to keep a single source of truth for column metadata.
|
|
203
|
+
...OPTIONAL_COLUMNS.flatMap((col) => [
|
|
204
|
+
".channel-table ." + col.cssClass + " { min-width: " + col.width + (col.align === "center" ? "; text-align: center" : "") + "; }",
|
|
205
|
+
".channel-table.hide-" + col.cssClass + " ." + col.cssClass + " { display: none; }"
|
|
206
|
+
]),
|
|
207
|
+
// Sortable header styles. Clickable headers with pointer cursor and subtle hover effect.
|
|
208
|
+
".channel-table th.sortable { cursor: pointer; user-select: none; }",
|
|
209
|
+
".channel-table th.sortable:hover { background: var(--surface-hover); }",
|
|
210
|
+
// Column picker dropdown. The Actions header uses flex layout to push the ellipsis button to the far right.
|
|
211
|
+
".channel-table th.col-actions { display: flex; align-items: center; justify-content: space-between; }",
|
|
212
|
+
".column-picker { position: relative; }",
|
|
213
|
+
".btn-col-picker { font-size: 16px; line-height: 1; vertical-align: middle; padding: 0 4px; color: var(--text-muted); cursor: pointer; " +
|
|
214
|
+
"background: none; border: none; border-radius: 3px; }",
|
|
215
|
+
".btn-col-picker:hover { color: var(--text-primary); background: var(--surface-hover); }",
|
|
216
|
+
".column-picker-menu { min-width: 140px; }",
|
|
217
|
+
// Key column styling: monospace at a slightly smaller size with secondary color to reduce visual weight.
|
|
218
|
+
".ch-key { color: var(--text-secondary); font-family: var(--font-mono); font-size: 13px; }",
|
|
219
|
+
// Responsive: hide Key and all optional columns on phones.
|
|
220
|
+
"@media (max-width: 768px) { .channel-table .col-key, .channel-table td:nth-child(1), .channel-table th:nth-child(1) { display: none; } " +
|
|
221
|
+
OPTIONAL_COLUMNS.map((col) => ".channel-table ." + col.cssClass).join(", ") + " { display: none; } }",
|
|
222
|
+
// User channel row tinting to distinguish custom/override channels from predefined.
|
|
223
|
+
".channel-table tr.user-channel { background: var(--user-channel-tint); }",
|
|
224
|
+
".channel-table tr.user-channel:hover { background: var(--user-channel-tint-hover); }",
|
|
225
|
+
// Disabled predefined channel row styling and hide-disabled toggle.
|
|
226
|
+
".channel-table tr.channel-disabled { opacity: 0.5; }",
|
|
227
|
+
".channel-table tr.channel-disabled td { color: var(--text-tertiary); }",
|
|
228
|
+
".channel-table.hide-disabled tr.channel-disabled { display: none; }",
|
|
229
|
+
// Provider-filtered channel row styling. Uses reduced opacity and italic text to distinguish from manually disabled rows. The compound selector ensures that rows
|
|
230
|
+
// which are both disabled and provider-filtered render at the disabled-level opacity (0.5) rather than the more aggressive unavailable-level opacity (0.4).
|
|
231
|
+
".channel-table tr.channel-unavailable { opacity: 0.4; font-style: italic; }",
|
|
232
|
+
".channel-table tr.channel-unavailable td { color: var(--text-tertiary); }",
|
|
233
|
+
".channel-table tr.channel-unavailable.channel-disabled { opacity: 0.5; }",
|
|
234
|
+
".channel-table.hide-disabled tr.channel-unavailable { display: none; }",
|
|
235
|
+
".no-provider-label { color: var(--text-tertiary); font-size: 12px; }",
|
|
236
|
+
".text-muted { color: var(--text-muted); }",
|
|
237
|
+
// Provider filter toolbar layout.
|
|
238
|
+
".provider-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }",
|
|
239
|
+
".provider-toolbar .toolbar-group { display: flex; align-items: center; gap: 6px; }",
|
|
240
|
+
".provider-toolbar .toolbar-label { font-size: 13px; color: var(--text-secondary); white-space: nowrap; }",
|
|
241
|
+
".provider-toolbar .toolbar-spacer { flex: 1; }",
|
|
242
|
+
// Provider dropdown multi-select.
|
|
243
|
+
".provider-dropdown-menu { min-width: 200px; max-height: 300px; overflow-y: auto; }",
|
|
244
|
+
".provider-option { display: flex; align-items: center; gap: 6px; padding: 5px 12px; font-size: 13px; cursor: pointer; color: var(--text-primary); }",
|
|
245
|
+
".provider-option:hover { background: var(--surface-sunken); }",
|
|
246
|
+
".provider-option input[type=\"checkbox\"] { margin: 0; }",
|
|
247
|
+
// Provider chips.
|
|
248
|
+
".provider-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }",
|
|
249
|
+
".provider-chip { display: inline-flex; align-items: center; gap: 4px; background: var(--surface-elevated); border: 1px solid var(--border-default); ",
|
|
250
|
+
"border-radius: 12px; padding: 2px 8px 2px 10px; font-size: 12px; color: var(--text-secondary); min-height: 24px; }",
|
|
251
|
+
".chip-close { background: none; border: none; cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; color: var(--text-muted); ",
|
|
252
|
+
"transition: color 0.2s; }",
|
|
253
|
+
".chip-close:hover { color: var(--text-primary); }",
|
|
254
|
+
// Bulk assign dropdown.
|
|
255
|
+
".bulk-assign-select { font-size: 13px; padding: 4px 8px; border: 1px solid var(--border-default); border-radius: var(--radius-md); ",
|
|
256
|
+
"background: var(--surface-page); color: var(--text-primary); cursor: pointer; }",
|
|
257
|
+
// Responsive: stack provider toolbar groups vertically on small screens.
|
|
258
|
+
"@media (max-width: 768px) { .provider-toolbar { flex-direction: column; align-items: flex-start; } }",
|
|
259
|
+
// Icon button styling for channel action buttons.
|
|
260
|
+
".btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border: none; ",
|
|
261
|
+
"border-radius: var(--radius-md); background: transparent; cursor: pointer; color: var(--text-secondary); transition: color 0.15s, background 0.15s; }",
|
|
262
|
+
".btn-icon:hover { background: var(--surface-hover); }",
|
|
263
|
+
".user-channel .btn-icon:hover { background: var(--user-channel-tint-hover); }",
|
|
264
|
+
".btn-icon-edit:hover { color: var(--interactive-edit); }",
|
|
265
|
+
".btn-icon-delete:hover { color: var(--interactive-delete); }",
|
|
266
|
+
".btn-icon-revert:hover { color: var(--interactive-edit); }",
|
|
267
|
+
".btn-icon-enable:hover { color: var(--interactive-success); }",
|
|
268
|
+
".btn-icon-disable:hover { color: var(--interactive-delete); }",
|
|
269
|
+
".btn-icon-login:hover { color: var(--interactive-primary); }",
|
|
270
|
+
".btn-icon-copy:hover { color: var(--interactive-primary); }",
|
|
271
|
+
".btn-icon-placeholder { display: inline-block; width: 28px; height: 28px; }",
|
|
272
|
+
// Health indicator colors. The login icon only uses health-success (provider verified). The health icon uses both (channel last-tune result).
|
|
273
|
+
".health-success { color: var(--interactive-success); }",
|
|
274
|
+
".health-failed { color: var(--interactive-delete); }",
|
|
275
|
+
// Health icon is non-interactive — no hover effect, default cursor. The .user-channel override needs matching specificity (0-3-0) to prevent the
|
|
276
|
+
// tinted hover background from making the health icon look clickable on user-defined channel rows.
|
|
277
|
+
".btn-icon-health { cursor: default; }",
|
|
278
|
+
".btn-icon-health:hover { background: transparent; color: var(--text-secondary); }",
|
|
279
|
+
".user-channel .btn-icon-health:hover { background: transparent; }",
|
|
280
|
+
// Override hover to preserve health color when set.
|
|
281
|
+
".btn-icon-health.health-success:hover { color: var(--interactive-success); }",
|
|
282
|
+
".btn-icon-health.health-failed:hover { color: var(--interactive-delete); }",
|
|
283
|
+
".copy-dropdown .dropdown-item { font-size: 12px; }",
|
|
284
|
+
// JS tooltip styling. The tooltip element is appended to <body> and positioned via getBoundingClientRect() so it's immune to overflow and stacking contexts.
|
|
285
|
+
// Only activated when the primary input can't hover (hover: none), targeting iPadOS where Safari doesn't show native title tooltips. On pure-touch
|
|
286
|
+
// devices without a trackpad, the JS loads but mouseenter never fires so the tooltip stays hidden. Desktop (hover: hover) skips initialization entirely.
|
|
287
|
+
".btn-icon-tooltip { position: fixed; padding: 4px 8px; border-radius: var(--radius-sm); background: var(--surface-overlay); color: var(--text-primary); ",
|
|
288
|
+
"font-size: 12px; white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity 0.5s; z-index: 10000; ",
|
|
289
|
+
"box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); }",
|
|
290
|
+
".btn-icon-tooltip.visible { opacity: 1; transition: opacity 0.1s; }",
|
|
291
|
+
// Channel toolbar with operation buttons and display controls.
|
|
292
|
+
".channel-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; margin-bottom: 15px; }",
|
|
293
|
+
".channel-toolbar .toolbar-group { display: flex; align-items: center; gap: 6px; }",
|
|
294
|
+
".channel-toolbar .toolbar-spacer { flex: 1; }",
|
|
295
|
+
".channel-toolbar .toggle-label { font-size: 12px; color: var(--text-secondary); cursor: pointer; display: flex; align-items: center; gap: 4px; ",
|
|
296
|
+
"user-select: none; }",
|
|
297
|
+
// Dropdown menu used by the Import button in the channel toolbar.
|
|
298
|
+
".dropdown { position: relative; display: inline-block; }",
|
|
299
|
+
".dropdown-menu { display: none; position: absolute; top: 100%; left: 0; z-index: 1000; min-width: 180px; padding: 4px 0; margin-top: 2px; ",
|
|
300
|
+
"background: var(--surface-overlay); border: 1px solid var(--border-default); border-radius: var(--radius-md); ",
|
|
301
|
+
"box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); }",
|
|
302
|
+
".dropdown-menu.show { display: block; }",
|
|
303
|
+
".dropdown-item { padding: 6px 12px; font-size: 13px; cursor: pointer; color: var(--text-primary); }",
|
|
304
|
+
".dropdown-item:hover { background: var(--surface-sunken); }",
|
|
305
|
+
".dropdown-option { display: block; padding: 2px 12px 6px 24px; font-size: 12px; color: var(--text-secondary); cursor: pointer; user-select: none; }",
|
|
306
|
+
".dropdown-divider { height: 1px; margin: 4px 0; background: var(--border-default); }",
|
|
307
|
+
// Channel form styles. Inputs use full width; selects use width classes from ui.ts for consistency with settings forms.
|
|
308
|
+
".channel-form { background: var(--form-bg); border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: 20px; margin-bottom: 20px; }",
|
|
309
|
+
".channel-form h3 { margin-top: 0; margin-bottom: 15px; color: var(--text-heading-secondary); }",
|
|
310
|
+
".channel-form .form-row { margin-bottom: 4px; }",
|
|
311
|
+
".channel-form .form-row:last-child { margin-bottom: 0; }",
|
|
312
|
+
".channel-form .form-input { width: 100%; box-sizing: border-box; }",
|
|
313
|
+
// Advanced toggle styles.
|
|
314
|
+
".advanced-toggle { color: var(--interactive-primary); cursor: pointer; font-size: 13px; margin-top: 5px; margin-bottom: 15px; }",
|
|
315
|
+
".advanced-toggle:hover { text-decoration: underline; }",
|
|
316
|
+
".advanced-fields { display: none; }",
|
|
317
|
+
".advanced-fields.show { display: block; }",
|
|
318
|
+
// Profile reference section styles.
|
|
319
|
+
".profile-reference { background: var(--surface-elevated); border: 1px solid var(--border-default); border-radius: var(--radius-lg); margin: 20px 0; ",
|
|
320
|
+
"padding: 20px; }",
|
|
321
|
+
".profile-reference-header { display: flex; justify-content: space-between; align-items: flex-start; }",
|
|
322
|
+
".profile-reference h3 { margin: 0 0 10px 0; color: var(--text-heading-secondary); }",
|
|
323
|
+
".profile-reference-close { color: var(--text-secondary); font-size: 18px; background: none; border: none; cursor: pointer; padding: 0 5px; }",
|
|
324
|
+
".profile-reference-close:hover { color: var(--text-primary); }",
|
|
325
|
+
".reference-intro { color: var(--text-secondary); font-size: 13px; margin-bottom: 20px; }",
|
|
326
|
+
".profile-category { margin-bottom: 20px; }",
|
|
327
|
+
".profile-category:last-child { margin-bottom: 0; }",
|
|
328
|
+
".profile-category h4 { color: var(--text-heading-secondary); font-size: 14px; font-weight: 600; margin: 0 0 8px 0; }",
|
|
329
|
+
".category-desc { color: var(--text-tertiary); font-size: 12px; margin: 0 0 10px 0; }",
|
|
330
|
+
".profile-list { margin: 0; padding: 0; }",
|
|
331
|
+
".profile-list dt { font-family: var(--font-mono); font-size: 13px; font-weight: 600; margin-top: 10px; color: var(--text-primary); }",
|
|
332
|
+
".profile-list dt:first-child { margin-top: 0; }",
|
|
333
|
+
".profile-list dd { color: var(--text-secondary); font-size: 13px; margin: 4px 0 0 0; }",
|
|
334
|
+
".selector-guide-heading { margin-top: 20px !important; border-top: 1px solid var(--border-default); padding-top: 16px; }",
|
|
335
|
+
// API Reference index.
|
|
336
|
+
".api-index { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px 24px; margin-top: 12px; }",
|
|
337
|
+
".api-index-group { display: flex; flex-direction: column; gap: 2px; }",
|
|
338
|
+
".api-index a { color: var(--text-secondary); text-decoration: none; font-size: 12px; line-height: 1.5; }",
|
|
339
|
+
".api-index a:hover { color: var(--interactive-primary); }",
|
|
340
|
+
".api-index a code { font-size: 11px; }",
|
|
341
|
+
".api-index-heading { font-weight: 600; font-size: 13px !important; color: var(--text-primary) !important; margin-bottom: 1px; }",
|
|
342
|
+
".api-index-desc { color: var(--text-muted); font-size: 11px; margin-bottom: 3px; }",
|
|
343
|
+
// Other landing page styles.
|
|
344
|
+
".endpoint code { font-size: 13px; }",
|
|
345
|
+
// Modified value indicator styling.
|
|
346
|
+
".form-group.modified { border-left: 3px solid var(--interactive-primary); padding-left: 12px; }",
|
|
347
|
+
".modified-dot { display: inline-block; width: 8px; height: 8px; background: var(--interactive-primary); border-radius: 50%; margin-right: 6px; ",
|
|
348
|
+
"vertical-align: middle; }",
|
|
349
|
+
// Per-setting reset button styling.
|
|
350
|
+
".btn-reset { background: transparent; border: 1px solid var(--border-default); border-radius: var(--radius-md); padding: 4px 8px; margin-left: 8px; ",
|
|
351
|
+
"cursor: pointer; font-size: 14px; color: var(--text-secondary); transition: all 0.15s ease; }",
|
|
352
|
+
".btn-reset:hover { background: var(--surface-elevated); border-color: var(--interactive-primary); color: var(--interactive-primary); }",
|
|
353
|
+
// Backup subtab section styling.
|
|
354
|
+
".backup-group { margin-bottom: 35px; }",
|
|
355
|
+
".backup-group-title { font-size: 16px; font-weight: 600; margin-bottom: 15px; color: var(--text-heading); ",
|
|
356
|
+
"padding-bottom: 8px; border-bottom: 1px solid var(--border-default); }",
|
|
357
|
+
".backup-section { margin-bottom: 20px; padding: 20px; background: var(--surface-elevated); border-radius: var(--radius-lg); ",
|
|
358
|
+
"border: 1px solid var(--border-default); }",
|
|
359
|
+
".backup-section h3 { margin-top: 0; margin-bottom: 10px; color: var(--text-heading-secondary); font-size: 15px; }",
|
|
360
|
+
".backup-section p { color: var(--text-secondary); margin-bottom: 15px; font-size: 14px; }",
|
|
361
|
+
".backup-section code { background: var(--surface-code); padding: 2px 5px; border-radius: 3px; font-size: 12px; }",
|
|
362
|
+
"#import-settings-file, #import-channels-file, #import-m3u-file { display: none; }",
|
|
363
|
+
".btn-export { background: var(--surface-elevated); border: 1px solid var(--border-default); color: var(--text-primary); ",
|
|
364
|
+
"padding: 10px 20px; border-radius: var(--radius-md); font-size: 14px; cursor: pointer; transition: all 0.15s ease; }",
|
|
365
|
+
".btn-export:hover { border-color: var(--interactive-primary); color: var(--interactive-primary); }",
|
|
366
|
+
".btn-import { background: var(--surface-elevated); border: 1px solid var(--border-default); color: var(--text-primary); ",
|
|
367
|
+
"padding: 10px 20px; border-radius: var(--radius-md); font-size: 14px; cursor: pointer; transition: all 0.15s ease; }",
|
|
368
|
+
".btn-import:hover { border-color: var(--interactive-primary); color: var(--interactive-primary); }",
|
|
369
|
+
// Login modal styles for channel authentication.
|
|
370
|
+
".login-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; ",
|
|
371
|
+
"align-items: center; justify-content: center; z-index: 1000; }",
|
|
372
|
+
".login-modal-content { background: var(--surface-overlay); padding: 30px; border-radius: var(--radius-lg); max-width: 450px; width: 90%; ",
|
|
373
|
+
"box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); }",
|
|
374
|
+
".login-modal-content h3 { margin-top: 0; margin-bottom: 15px; color: var(--text-heading); }",
|
|
375
|
+
".login-modal-content p { color: var(--text-secondary); margin-bottom: 15px; font-size: 14px; line-height: 1.5; }",
|
|
376
|
+
".login-modal-hint { font-size: 13px; color: var(--text-muted); }",
|
|
377
|
+
".login-modal-buttons { margin-top: 20px; text-align: right; }",
|
|
378
|
+
// Restart dialog modal styles for pending restart notification.
|
|
379
|
+
".restart-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: none; ",
|
|
380
|
+
"align-items: center; justify-content: center; z-index: 1000; }",
|
|
381
|
+
".restart-modal-content { background: var(--surface-overlay); padding: 30px; border-radius: var(--radius-lg); max-width: 400px; width: 90%; ",
|
|
382
|
+
"box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); text-align: center; }",
|
|
383
|
+
".restart-modal-content h3 { margin-top: 0; margin-bottom: 15px; color: var(--text-heading); }",
|
|
384
|
+
".restart-modal-content p { color: var(--text-secondary); margin-bottom: 0; font-size: 14px; line-height: 1.5; }",
|
|
385
|
+
".restart-modal-status { margin: 16px 0; color: var(--text-muted); font-size: 13px; }",
|
|
386
|
+
".restart-modal-buttons { display: flex; gap: 12px; justify-content: center; margin-top: 20px; }",
|
|
387
|
+
".btn-danger { background: var(--interactive-danger); color: white; border: none; padding: 10px 20px; border-radius: var(--radius-md); ",
|
|
388
|
+
"font-size: 14px; cursor: pointer; transition: all 0.15s ease; }",
|
|
389
|
+
".btn-danger:hover { opacity: 0.9; }",
|
|
390
|
+
// Toast notification container: fixed top-right, above all modals.
|
|
391
|
+
".toast-container { position: fixed; top: 20px; right: 20px; z-index: 1001; display: flex; flex-direction: column; gap: 8px; pointer-events: none; }",
|
|
392
|
+
// Individual toast: themed colors, slide-in animation, close button.
|
|
393
|
+
".toast { padding: 12px 36px 12px 16px; border-radius: var(--radius-md); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); min-width: 280px; max-width: 420px; ",
|
|
394
|
+
"font-size: 13px; line-height: 1.4; white-space: pre-line; position: relative; pointer-events: auto; animation: toastIn 0.3s ease-out; }",
|
|
395
|
+
".toast.toast-exit { animation: toastOut 0.3s ease-in forwards; }",
|
|
396
|
+
// Type variants using existing theme status variables.
|
|
397
|
+
".toast.success { background: var(--status-success-bg); border: 1px solid var(--status-success-border); color: var(--status-success-text); }",
|
|
398
|
+
".toast.error { background: var(--status-error-bg); border: 1px solid var(--status-error-border); color: var(--status-error-text); }",
|
|
399
|
+
".toast.warning { background: var(--status-warning-bg); border: 1px solid var(--status-warning-border); color: var(--status-warning-text); }",
|
|
400
|
+
".toast.info { background: var(--status-info-bg); border: 1px solid var(--status-info-border); color: var(--status-info-text); }",
|
|
401
|
+
// Close button positioned top-right within each toast.
|
|
402
|
+
".toast-close { position: absolute; top: 8px; right: 8px; background: none; border: none; cursor: pointer; font-size: 16px; line-height: 1; padding: 0 4px; ",
|
|
403
|
+
"color: inherit; opacity: 0.6; }",
|
|
404
|
+
".toast-close:hover { opacity: 1; }",
|
|
405
|
+
// Action button for toasts with an undo or similar inline action.
|
|
406
|
+
".toast-action { display: inline-block; margin-left: 8px; padding: 2px 10px; border: 1px solid currentColor; border-radius: var(--radius-sm); ",
|
|
407
|
+
"background: none; color: inherit; cursor: pointer; font-size: 12px; font-weight: 600; opacity: 0.8; vertical-align: baseline; }",
|
|
408
|
+
".toast-action:hover { opacity: 1; background: rgba(0, 0, 0, 0.1); }",
|
|
409
|
+
// Toast slide animations.
|
|
410
|
+
"@keyframes toastIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }",
|
|
411
|
+
"@keyframes toastOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(120%); opacity: 0; } }",
|
|
412
|
+
// Responsive: full-width toasts on narrow screens.
|
|
413
|
+
"@media (max-width: 768px) { .toast-container { left: 20px; right: 20px; } .toast { min-width: 0; max-width: none; } }",
|
|
414
|
+
// Loading state for buttons.
|
|
415
|
+
".btn.loading { opacity: 0.7; pointer-events: none; }",
|
|
416
|
+
".btn.loading::after { content: '...'; }",
|
|
417
|
+
// Inline copy button for Quick Start section.
|
|
418
|
+
".btn-copy-inline { background: var(--surface-elevated); border: 1px solid var(--border-default); padding: 2px 8px; font-size: 12px; ",
|
|
419
|
+
"border-radius: var(--radius-sm); cursor: pointer; color: var(--text-secondary); margin-left: 6px; vertical-align: middle; }",
|
|
420
|
+
".btn-copy-inline:hover { background: var(--surface-hover); color: var(--text-primary); }",
|
|
421
|
+
".copy-feedback-inline { color: var(--stream-healthy); font-size: 12px; margin-left: 8px; display: none; }",
|
|
422
|
+
// Version display styles.
|
|
423
|
+
".version-container { display: inline-flex; align-items: center; gap: 6px; }",
|
|
424
|
+
".version { font-size: 13px; color: var(--text-muted); font-weight: 400; text-decoration: none; transition: color 0.2s; }",
|
|
425
|
+
".version:hover { color: var(--text-primary); }",
|
|
426
|
+
".version.version-update { color: var(--interactive-primary); }",
|
|
427
|
+
".version.version-update:hover { color: var(--interactive-primary-hover, var(--interactive-primary)); text-decoration: underline; }",
|
|
428
|
+
".version-check { background: none; border: none; padding: 0; margin: 0; cursor: pointer; font-size: 14px; color: var(--text-muted); ",
|
|
429
|
+
"line-height: 1; transition: color 0.2s, transform 0.3s; opacity: 0.7; }",
|
|
430
|
+
".version-check:hover { color: var(--text-primary); opacity: 1; }",
|
|
431
|
+
".version-check.checking { animation: spin 1s linear infinite; pointer-events: none; }",
|
|
432
|
+
".version-check.up-to-date { color: var(--stream-healthy); opacity: 1; }",
|
|
433
|
+
".version-check.check-error { color: var(--stream-error); opacity: 1; }",
|
|
434
|
+
"@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }",
|
|
435
|
+
// Changelog modal styles.
|
|
436
|
+
".changelog-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: none; ",
|
|
437
|
+
"align-items: center; justify-content: center; z-index: 1000; }",
|
|
438
|
+
".changelog-modal-content { background: var(--surface-overlay); padding: 30px; border-radius: var(--radius-lg); max-width: 500px; width: 90%; ",
|
|
439
|
+
"box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3); }",
|
|
440
|
+
".changelog-modal-content h3 { margin-top: 0; margin-bottom: 20px; color: var(--text-heading); }",
|
|
441
|
+
".changelog-list { margin: 0 0 20px 0; padding: 0 0 0 20px; color: var(--text-secondary); font-size: 14px; line-height: 1.6; }",
|
|
442
|
+
".changelog-list li { margin-bottom: 8px; }",
|
|
443
|
+
".changelog-list li:last-child { margin-bottom: 0; }",
|
|
444
|
+
".changelog-modal-buttons { display: flex; gap: 12px; justify-content: flex-end; }"
|
|
445
|
+
].join("\n");
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../src/routes/root/styles.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/theme.js
CHANGED
|
@@ -26,13 +26,15 @@ export function generateThemeStyles() {
|
|
|
26
26
|
" --surface-elevated: #f9f9f9;",
|
|
27
27
|
" --surface-sunken: #f4f4f4;",
|
|
28
28
|
" --surface-overlay: #ffffff;",
|
|
29
|
+
" --surface-hover: #eeeeee;",
|
|
29
30
|
" --surface-code: #f4f4f4;",
|
|
30
31
|
" --surface-pre: #f8f8f8;",
|
|
31
32
|
// Text colors - typography at different emphasis levels.
|
|
32
33
|
" --text-primary: #333333;",
|
|
33
34
|
" --text-secondary: #666666;",
|
|
34
35
|
" --text-muted: #888888;",
|
|
35
|
-
" --text-
|
|
36
|
+
" --text-tertiary: #999999;",
|
|
37
|
+
" --text-disabled: #aaaaaa;",
|
|
36
38
|
" --text-heading: #2c3e50;",
|
|
37
39
|
" --text-heading-secondary: #34495e;",
|
|
38
40
|
" --text-inverse: #ffffff;",
|
|
@@ -132,6 +134,8 @@ export function generateThemeStyles() {
|
|
|
132
134
|
" --dark-scrollbar-track: #2d2d2d;",
|
|
133
135
|
" --dark-scrollbar-thumb: #555555;",
|
|
134
136
|
" --dark-scrollbar-thumb-hover: #666666;",
|
|
137
|
+
// Font stacks.
|
|
138
|
+
" --font-mono: 'SF Mono', Monaco, monospace;",
|
|
135
139
|
// Spacing and sizing tokens.
|
|
136
140
|
" --radius-sm: 3px;",
|
|
137
141
|
" --radius-md: 4px;",
|
|
@@ -146,12 +150,14 @@ export function generateThemeStyles() {
|
|
|
146
150
|
" --surface-elevated: #2a2a2a;",
|
|
147
151
|
" --surface-sunken: #151515;",
|
|
148
152
|
" --surface-overlay: #2d2d2d;",
|
|
153
|
+
" --surface-hover: #353535;",
|
|
149
154
|
" --surface-code: #2d2d2d;",
|
|
150
155
|
" --surface-pre: #252525;",
|
|
151
156
|
// Text colors - light text on dark backgrounds.
|
|
152
157
|
" --text-primary: #e0e0e0;",
|
|
153
158
|
" --text-secondary: #b0b0b0;",
|
|
154
159
|
" --text-muted: #888888;",
|
|
160
|
+
" --text-tertiary: #777777;",
|
|
155
161
|
" --text-disabled: #666666;",
|
|
156
162
|
" --text-heading: #ffffff;",
|
|
157
163
|
" --text-heading-secondary: #e0e0e0;",
|
package/dist/routes/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/routes/theme.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/routes/theme.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/ui.js
CHANGED
|
@@ -95,6 +95,7 @@ export function generateBaseStyles() {
|
|
|
95
95
|
".form-select { flex: 0 0 auto; padding: 8px 12px; border: 1px solid var(--form-input-border); border-radius: var(--radius-md); ",
|
|
96
96
|
"background: var(--form-input-bg); color: var(--text-primary); font-size: 14px; cursor: pointer; }",
|
|
97
97
|
".form-checkbox { flex: none; width: 18px; height: 18px; cursor: pointer; accent-color: var(--interactive-primary); }",
|
|
98
|
+
".checkbox-list-grid { font-size: 13px; }",
|
|
98
99
|
// Focus states.
|
|
99
100
|
".form-input:focus, .form-select:focus { border-color: var(--interactive-primary); outline: none; box-shadow: 0 0 0 2px var(--border-focus); }",
|
|
100
101
|
// Disabled states.
|
|
@@ -231,7 +232,7 @@ export function generateTabScript(options = {}) {
|
|
|
231
232
|
" try { localStorage.setItem('" + localStorageKey + "', category); } catch(e) {}",
|
|
232
233
|
" if(updateUrl !== false) {",
|
|
233
234
|
" var parsed = parseHash();",
|
|
234
|
-
" var subtab = (category === 'config') ? parsed.subtab : null;",
|
|
235
|
+
" var subtab = ((category === 'config') || (category === 'channels')) ? parsed.subtab : null;",
|
|
235
236
|
" updateHash(category, subtab);",
|
|
236
237
|
" }",
|
|
237
238
|
" document.dispatchEvent(new CustomEvent('tabactivated', { detail: { category: category } }));",
|
|
@@ -269,6 +270,9 @@ export function generateTabScript(options = {}) {
|
|
|
269
270
|
" if(parsed.tab === 'config' && parsed.subtab && window.switchConfigSubtab) {",
|
|
270
271
|
" window.switchConfigSubtab(parsed.subtab, false);",
|
|
271
272
|
" }",
|
|
273
|
+
" if(parsed.tab === 'channels' && parsed.subtab && window.switchChannelsSubtab) {",
|
|
274
|
+
" window.switchChannelsSubtab(parsed.subtab, false);",
|
|
275
|
+
" }",
|
|
272
276
|
" }",
|
|
273
277
|
" });",
|
|
274
278
|
// Determine initial tab: hash > localStorage > default.
|
|
@@ -287,8 +291,9 @@ export function generateTabScript(options = {}) {
|
|
|
287
291
|
" document.dispatchEvent(new CustomEvent('tabactivated', { detail: { category: category } }));",
|
|
288
292
|
" }",
|
|
289
293
|
" }",
|
|
290
|
-
// Store parsed hash for subtab
|
|
291
|
-
" window.initialHashSubtab = parsed.subtab;",
|
|
294
|
+
// Store parsed hash for subtab scripts to use. Config and Channels tabs each read their own variable.
|
|
295
|
+
" window.initialHashSubtab = (parsed.tab === 'config') ? parsed.subtab : null;",
|
|
296
|
+
" window.initialChannelsHashSubtab = (parsed.tab === 'channels') ? parsed.subtab : null;",
|
|
292
297
|
"})();",
|
|
293
298
|
"</script>"
|
|
294
299
|
].join("\n");
|
package/dist/routes/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/routes/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AAEH,wCAAwC;AACxC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,mBAAmB,EACjJ,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAmBtE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAEhC,OAAO;QAEL,eAAe;QACf,gJAAgJ;QAChJ,kFAAkF;QAClF,+GAA+G;QAC/G,kFAAkF;QAClF,qFAAqF;QAErF,eAAe;QACf,iEAAiE;QACjE,yCAAyC;QAEzC,eAAe;QACf,yIAAyI;QACzI,mJAAmJ;QACnJ,oCAAoC;QAEpC,gBAAgB;QAChB,mEAAmE;QACnE,2FAA2F;QAC3F,8DAA8D;QAC9D,2DAA2D;QAE3D,iBAAiB;QACjB,4JAA4J;QAC5J,sCAAsC;QACtC,mEAAmE;QAEnE,kBAAkB;QAClB,mCAAmC;QAEnC,sDAAsD;QACtD,iFAAiF;QACjF,yDAAyD;QACzD,oHAAoH;QACpH,oFAAoF;QACpF,4GAA4G;QAC5G,8EAA8E;QAC9E,oHAAoH;QACpH,oFAAoF;QAEpF,iBAAiB;QACjB,gIAAgI;QAChI,sCAAsC;QACtC,sFAAsF;QACtF,sEAAsE;QACtE,0FAA0F;QAC1F,0EAA0E;QAC1E,oFAAoF;QACpF,oEAAoE;QACpE,sFAAsF;QACtF,sEAAsE;QACtE,gFAAgF;QAChF,gEAAgE;QAChE,oFAAoF;QACpF,oEAAoE;QACpE,yCAAyC;QACzC,sEAAsE;QACtE,sDAAsD;QAEtD,gBAAgB;QAChB,yHAAyH;QACzH,2FAA2F;QAC3F,wFAAwF;QACxF,8FAA8F;QAC9F,+EAA+E;QAC/E,kFAAkF;QAElF,2BAA2B;QAC3B,4CAA4C;QAC5C,oCAAoC;QACpC,+DAA+D;QAC/D,mEAAmE;QACnE,qEAAqE;QACrE,+DAA+D;QAC/D,2DAA2D;QAE3D,eAAe;QACf,kHAAkH;QAClH,+DAA+D;QAC/D,uEAAuE;QACvE,kFAAkF;QAClF,4FAA4F;QAC5F,qDAAqD;QAErD,8JAA8J;QAC9J,qCAAqC;QACrC,0IAA0I;QAC1I,iEAAiE;QACjE,iIAAiI;QACjI,mGAAmG;QACnG,sHAAsH;
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/routes/ui.ts"],"names":[],"mappings":"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"}
|