@valoranchi/riot-client 0.4.0 → 0.6.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.
Files changed (156) hide show
  1. package/README.md +15 -0
  2. package/dist/RiotClient.d.ts +4 -1
  3. package/dist/RiotClient.d.ts.map +1 -1
  4. package/dist/RiotClient.js +7 -1
  5. package/dist/RiotClient.js.map +1 -1
  6. package/dist/analysis/wishlist.d.ts +5 -0
  7. package/dist/analysis/wishlist.d.ts.map +1 -0
  8. package/dist/analysis/wishlist.js +122 -0
  9. package/dist/analysis/wishlist.js.map +1 -0
  10. package/dist/catalogue/Catalogue.d.ts +1 -0
  11. package/dist/catalogue/Catalogue.d.ts.map +1 -1
  12. package/dist/catalogue/Catalogue.js +11 -0
  13. package/dist/catalogue/Catalogue.js.map +1 -1
  14. package/dist/cli.d.ts +10 -9
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +205 -36
  17. package/dist/cli.js.map +1 -1
  18. package/dist/client/AccountService.d.ts.map +1 -1
  19. package/dist/client/AccountService.js.map +1 -1
  20. package/dist/client/ClientContext.d.ts +4 -0
  21. package/dist/client/ClientContext.d.ts.map +1 -1
  22. package/dist/client/ClientContext.js.map +1 -1
  23. package/dist/client/OfficialService.d.ts +35 -0
  24. package/dist/client/OfficialService.d.ts.map +1 -0
  25. package/dist/client/OfficialService.js +141 -0
  26. package/dist/client/OfficialService.js.map +1 -0
  27. package/dist/client/StoreService.d.ts +6 -1
  28. package/dist/client/StoreService.d.ts.map +1 -1
  29. package/dist/client/StoreService.js +87 -5
  30. package/dist/client/StoreService.js.map +1 -1
  31. package/dist/client/api.d.ts +32 -1
  32. package/dist/client/api.d.ts.map +1 -1
  33. package/dist/dashboardLauncher.d.ts +12 -0
  34. package/dist/dashboardLauncher.d.ts.map +1 -0
  35. package/dist/dashboardLauncher.js +94 -0
  36. package/dist/dashboardLauncher.js.map +1 -0
  37. package/dist/errors.d.ts +12 -2
  38. package/dist/errors.d.ts.map +1 -1
  39. package/dist/errors.js +20 -3
  40. package/dist/errors.js.map +1 -1
  41. package/dist/formatError.d.ts +10 -0
  42. package/dist/formatError.d.ts.map +1 -0
  43. package/dist/formatError.js +29 -0
  44. package/dist/formatError.js.map +1 -0
  45. package/dist/index.d.ts +7 -5
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +5 -3
  48. package/dist/index.js.map +1 -1
  49. package/dist/mcp/McpServer.d.ts +21 -0
  50. package/dist/mcp/McpServer.d.ts.map +1 -0
  51. package/dist/mcp/McpServer.js +135 -0
  52. package/dist/mcp/McpServer.js.map +1 -0
  53. package/dist/mcp/index.d.ts +4 -0
  54. package/dist/mcp/index.d.ts.map +1 -0
  55. package/dist/mcp/index.js +3 -0
  56. package/dist/mcp/index.js.map +1 -0
  57. package/dist/mcp/tools.d.ts +9 -0
  58. package/dist/mcp/tools.d.ts.map +1 -0
  59. package/dist/mcp/tools.js +83 -0
  60. package/dist/mcp/tools.js.map +1 -0
  61. package/dist/mcp/types.d.ts +46 -0
  62. package/dist/mcp/types.d.ts.map +1 -0
  63. package/dist/mcp/types.js +2 -0
  64. package/dist/mcp/types.js.map +1 -0
  65. package/dist/model/index.d.ts +45 -0
  66. package/dist/model/index.d.ts.map +1 -1
  67. package/dist/official/OfficialApi.d.ts +35 -0
  68. package/dist/official/OfficialApi.d.ts.map +1 -0
  69. package/dist/official/OfficialApi.js +148 -0
  70. package/dist/official/OfficialApi.js.map +1 -0
  71. package/dist/official/OfficialMatchAdapter.d.ts +11 -0
  72. package/dist/official/OfficialMatchAdapter.d.ts.map +1 -0
  73. package/dist/official/OfficialMatchAdapter.js +157 -0
  74. package/dist/official/OfficialMatchAdapter.js.map +1 -0
  75. package/dist/official/RateLimiter.d.ts +20 -0
  76. package/dist/official/RateLimiter.d.ts.map +1 -0
  77. package/dist/official/RateLimiter.js +56 -0
  78. package/dist/official/RateLimiter.js.map +1 -0
  79. package/dist/official/types.d.ts +214 -0
  80. package/dist/official/types.d.ts.map +1 -0
  81. package/dist/official/types.js +2 -0
  82. package/dist/official/types.js.map +1 -0
  83. package/dist/raw.d.ts +4 -0
  84. package/dist/raw.d.ts.map +1 -1
  85. package/dist/raw.js +4 -0
  86. package/dist/raw.js.map +1 -1
  87. package/dist/riot/HttpGateway.d.ts.map +1 -1
  88. package/dist/riot/HttpGateway.js +9 -2
  89. package/dist/riot/HttpGateway.js.map +1 -1
  90. package/dist/riot/ResponseCache.d.ts +2 -0
  91. package/dist/riot/ResponseCache.d.ts.map +1 -1
  92. package/dist/riot/ResponseCache.js +8 -2
  93. package/dist/riot/ResponseCache.js.map +1 -1
  94. package/dist/serve/dashboard/dashboardCss.d.ts +2 -0
  95. package/dist/serve/dashboard/dashboardCss.d.ts.map +1 -0
  96. package/dist/serve/dashboard/dashboardCss.js +634 -0
  97. package/dist/serve/dashboard/dashboardCss.js.map +1 -0
  98. package/dist/serve/dashboard/dashboardHtml.d.ts +2 -0
  99. package/dist/serve/dashboard/dashboardHtml.d.ts.map +1 -0
  100. package/dist/serve/dashboard/dashboardHtml.js +95 -0
  101. package/dist/serve/dashboard/dashboardHtml.js.map +1 -0
  102. package/dist/serve/dashboard/dashboardJs.d.ts +2 -0
  103. package/dist/serve/dashboard/dashboardJs.d.ts.map +1 -0
  104. package/dist/serve/dashboard/dashboardJs.js +668 -0
  105. package/dist/serve/dashboard/dashboardJs.js.map +1 -0
  106. package/dist/serve/dashboard/index.d.ts +4 -0
  107. package/dist/serve/dashboard/index.d.ts.map +1 -0
  108. package/dist/serve/dashboard/index.js +4 -0
  109. package/dist/serve/dashboard/index.js.map +1 -0
  110. package/dist/serve/index.d.ts +2 -1
  111. package/dist/serve/index.d.ts.map +1 -1
  112. package/dist/serve/index.js +1 -0
  113. package/dist/serve/index.js.map +1 -1
  114. package/dist/serve/indexHtml.d.ts.map +1 -1
  115. package/dist/serve/indexHtml.js +1 -0
  116. package/dist/serve/indexHtml.js.map +1 -1
  117. package/dist/serve/openapi.d.ts.map +1 -1
  118. package/dist/serve/openapi.js +11 -0
  119. package/dist/serve/openapi.js.map +1 -1
  120. package/dist/serve/routes.d.ts +4 -2
  121. package/dist/serve/routes.d.ts.map +1 -1
  122. package/dist/serve/routes.js +434 -0
  123. package/dist/serve/routes.js.map +1 -1
  124. package/dist/serve/security.d.ts +6 -0
  125. package/dist/serve/security.d.ts.map +1 -0
  126. package/dist/serve/security.js +65 -0
  127. package/dist/serve/security.js.map +1 -0
  128. package/dist/serve/server.d.ts.map +1 -1
  129. package/dist/serve/server.js +38 -5
  130. package/dist/serve/server.js.map +1 -1
  131. package/dist/serve/types.d.ts +8 -0
  132. package/dist/serve/types.d.ts.map +1 -1
  133. package/dist/version.d.ts +2 -0
  134. package/dist/version.d.ts.map +1 -0
  135. package/dist/version.js +12 -0
  136. package/dist/version.js.map +1 -0
  137. package/dist/watch/StoreWatcher.d.ts +27 -0
  138. package/dist/watch/StoreWatcher.d.ts.map +1 -0
  139. package/dist/watch/StoreWatcher.js +116 -0
  140. package/dist/watch/StoreWatcher.js.map +1 -0
  141. package/dist/watch/WebhookNotifier.d.ts +8 -0
  142. package/dist/watch/WebhookNotifier.d.ts.map +1 -0
  143. package/dist/watch/WebhookNotifier.js +42 -0
  144. package/dist/watch/WebhookNotifier.js.map +1 -0
  145. package/dist/watch/index.d.ts +9 -3
  146. package/dist/watch/index.d.ts.map +1 -1
  147. package/dist/watch/index.js +12 -1
  148. package/dist/watch/index.js.map +1 -1
  149. package/dist/watch/types.d.ts +17 -1
  150. package/dist/watch/types.d.ts.map +1 -1
  151. package/package.json +1 -1
  152. package/schema/OfficialAccount.json +25 -0
  153. package/schema/OfficialProfile.json +354 -0
  154. package/schema/Wishlist.json +35 -0
  155. package/schema/WishlistCheck.json +67 -0
  156. package/schema/WishlistHit.json +51 -0
@@ -0,0 +1,634 @@
1
+ export function renderDashboardCss() {
2
+ return `:root {
3
+ --bg-main: #0f1923;
4
+ --bg-panel: #171f28;
5
+ --bg-card: #1f2732;
6
+ --bg-card-hover: #26313e;
7
+ --accent: #ff4655;
8
+ --accent-light: #ff6875;
9
+ --accent-glow: rgba(255, 70, 85, 0.25);
10
+ --text-primary: #ece8e1;
11
+ --text-secondary: #9ca3af;
12
+ --text-muted: #6b7280;
13
+ --border: rgba(255, 255, 255, 0.08);
14
+ --border-focus: rgba(255, 70, 85, 0.5);
15
+ --success: #10b981;
16
+ --danger: #ef4444;
17
+ --warning: #f59e0b;
18
+ --vp-gold: #f59e0b;
19
+ --radianite-cyan: #06b6d4;
20
+ --kc-purple: #a855f7;
21
+ --radius-sm: 4px;
22
+ --radius-md: 8px;
23
+ --radius-lg: 12px;
24
+ }
25
+
26
+ * {
27
+ box-sizing: border-box;
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ body {
33
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
34
+ background-color: var(--bg-main);
35
+ color: var(--text-primary);
36
+ line-height: 1.5;
37
+ min-height: 100vh;
38
+ }
39
+
40
+ #app {
41
+ display: flex;
42
+ flex-direction: column;
43
+ min-height: 100vh;
44
+ }
45
+
46
+ .app-header {
47
+ display: flex;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ padding: 0.75rem 2rem;
51
+ background: var(--bg-panel);
52
+ border-bottom: 1px solid var(--border);
53
+ position: sticky;
54
+ top: 0;
55
+ z-index: 50;
56
+ backdrop-filter: blur(8px);
57
+ }
58
+
59
+ .brand {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: 0.75rem;
63
+ }
64
+
65
+ .brand-title {
66
+ font-size: 1.15rem;
67
+ font-weight: 800;
68
+ letter-spacing: 0.1em;
69
+ color: var(--text-primary);
70
+ }
71
+
72
+ .nav-tabs {
73
+ display: flex;
74
+ gap: 0.5rem;
75
+ }
76
+
77
+ .tab-btn {
78
+ background: transparent;
79
+ border: 1px solid transparent;
80
+ color: var(--text-secondary);
81
+ font-size: 0.95rem;
82
+ font-weight: 600;
83
+ padding: 0.5rem 1rem;
84
+ border-radius: var(--radius-sm);
85
+ cursor: pointer;
86
+ transition: all 0.15s ease;
87
+ }
88
+
89
+ .tab-btn:hover {
90
+ color: var(--text-primary);
91
+ background: rgba(255, 255, 255, 0.05);
92
+ }
93
+
94
+ .tab-btn.active {
95
+ color: #fff;
96
+ background: var(--accent);
97
+ border-color: var(--accent);
98
+ box-shadow: 0 2px 8px var(--accent-glow);
99
+ }
100
+
101
+ .banner-offline {
102
+ background: linear-gradient(90deg, #371b1e, #291a24);
103
+ border-bottom: 1px solid rgba(255, 70, 85, 0.4);
104
+ padding: 1rem 2rem;
105
+ transition: all 0.3s ease;
106
+ }
107
+
108
+ .banner-offline.hidden {
109
+ display: none;
110
+ }
111
+
112
+ .banner-content {
113
+ display: flex;
114
+ align-items: center;
115
+ gap: 1rem;
116
+ max-width: 1200px;
117
+ margin: 0 auto;
118
+ }
119
+
120
+ .banner-icon {
121
+ font-size: 1.75rem;
122
+ }
123
+
124
+ .banner-text {
125
+ display: flex;
126
+ flex-direction: column;
127
+ gap: 0.2rem;
128
+ }
129
+
130
+ .banner-retry {
131
+ font-size: 0.85rem;
132
+ color: var(--accent-light);
133
+ font-style: italic;
134
+ }
135
+
136
+ .main-content {
137
+ flex: 1;
138
+ max-width: 1200px;
139
+ width: 100%;
140
+ margin: 0 auto;
141
+ padding: 2rem 1.5rem;
142
+ }
143
+
144
+ .tab-pane {
145
+ display: none;
146
+ }
147
+
148
+ .tab-pane.active {
149
+ display: block;
150
+ }
151
+
152
+ .loading-placeholder {
153
+ padding: 3rem;
154
+ text-align: center;
155
+ color: var(--text-muted);
156
+ font-size: 1.1rem;
157
+ }
158
+
159
+ .inline-error {
160
+ padding: 1rem 1.5rem;
161
+ background: rgba(239, 68, 68, 0.1);
162
+ border: 1px solid rgba(239, 68, 68, 0.3);
163
+ border-radius: var(--radius-md);
164
+ color: #fca5a5;
165
+ margin-bottom: 1.5rem;
166
+ }
167
+
168
+ .home-grid {
169
+ display: grid;
170
+ grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
171
+ gap: 1.5rem;
172
+ }
173
+
174
+ .home-card {
175
+ background: var(--bg-card);
176
+ border: 1px solid var(--border);
177
+ border-radius: var(--radius-md);
178
+ padding: 1.5rem;
179
+ }
180
+
181
+ .profile-header {
182
+ display: flex;
183
+ align-items: center;
184
+ gap: 1.25rem;
185
+ }
186
+
187
+ .profile-card-art {
188
+ width: 72px;
189
+ height: 72px;
190
+ border-radius: var(--radius-md);
191
+ object-fit: cover;
192
+ border: 2px solid var(--accent);
193
+ }
194
+
195
+ .profile-info h2 {
196
+ font-size: 1.35rem;
197
+ font-weight: 700;
198
+ color: var(--text-primary);
199
+ }
200
+
201
+ .level-badge {
202
+ display: inline-block;
203
+ font-size: 0.8rem;
204
+ font-weight: 600;
205
+ background: var(--bg-panel);
206
+ border: 1px solid var(--border);
207
+ padding: 0.15rem 0.6rem;
208
+ border-radius: 999px;
209
+ margin-top: 0.35rem;
210
+ color: var(--text-secondary);
211
+ }
212
+
213
+ .rank-display {
214
+ display: flex;
215
+ align-items: center;
216
+ gap: 1.25rem;
217
+ margin-top: 1rem;
218
+ }
219
+
220
+ .rank-icon {
221
+ width: 64px;
222
+ height: 64px;
223
+ object-fit: contain;
224
+ }
225
+
226
+ .rank-details h3 {
227
+ font-size: 1.2rem;
228
+ font-weight: 700;
229
+ }
230
+
231
+ .rr-text {
232
+ font-size: 0.95rem;
233
+ color: var(--text-secondary);
234
+ }
235
+
236
+ .fit-badge {
237
+ display: inline-block;
238
+ font-size: 0.75rem;
239
+ font-weight: 600;
240
+ padding: 0.2rem 0.5rem;
241
+ border-radius: var(--radius-sm);
242
+ background: rgba(255, 255, 255, 0.05);
243
+ margin-top: 0.25rem;
244
+ }
245
+
246
+ .wallet-chips {
247
+ display: flex;
248
+ flex-wrap: wrap;
249
+ gap: 1rem;
250
+ margin-top: 1rem;
251
+ }
252
+
253
+ .wallet-chip {
254
+ flex: 1;
255
+ min-width: 90px;
256
+ background: var(--bg-panel);
257
+ border: 1px solid var(--border);
258
+ padding: 0.75rem;
259
+ border-radius: var(--radius-sm);
260
+ display: flex;
261
+ flex-direction: column;
262
+ align-items: center;
263
+ }
264
+
265
+ .wallet-val {
266
+ font-size: 1.2rem;
267
+ font-weight: 700;
268
+ }
269
+
270
+ .wallet-chip.vp .wallet-val { color: var(--vp-gold); }
271
+ .wallet-chip.rad .wallet-val { color: var(--radianite-cyan); }
272
+ .wallet-chip.kc .wallet-val { color: var(--kc-purple); }
273
+
274
+ .wallet-label {
275
+ font-size: 0.75rem;
276
+ color: var(--text-muted);
277
+ text-transform: uppercase;
278
+ margin-top: 0.2rem;
279
+ }
280
+
281
+ .section-title {
282
+ font-size: 1.25rem;
283
+ font-weight: 700;
284
+ margin-bottom: 1rem;
285
+ display: flex;
286
+ align-items: center;
287
+ justify-content: space-between;
288
+ }
289
+
290
+ .countdown-timer {
291
+ font-size: 0.95rem;
292
+ font-weight: 500;
293
+ color: var(--accent-light);
294
+ }
295
+
296
+ .store-grid {
297
+ display: grid;
298
+ grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
299
+ gap: 1.25rem;
300
+ margin-bottom: 2rem;
301
+ }
302
+
303
+ .skin-card {
304
+ background: var(--bg-card);
305
+ border: 1px solid var(--border);
306
+ border-radius: var(--radius-md);
307
+ padding: 1.25rem;
308
+ display: flex;
309
+ flex-direction: column;
310
+ position: relative;
311
+ transition: transform 0.15s ease, border-color 0.15s ease;
312
+ }
313
+
314
+ .skin-card:hover {
315
+ transform: translateY(-2px);
316
+ border-color: rgba(255, 255, 255, 0.2);
317
+ }
318
+
319
+ .skin-card.in-store {
320
+ border-color: var(--accent);
321
+ box-shadow: 0 0 12px var(--accent-glow);
322
+ }
323
+
324
+ .hit-badge {
325
+ position: absolute;
326
+ top: 0.75rem;
327
+ right: 0.75rem;
328
+ background: var(--accent);
329
+ color: #fff;
330
+ font-size: 0.7rem;
331
+ font-weight: 800;
332
+ padding: 0.2rem 0.5rem;
333
+ border-radius: var(--radius-sm);
334
+ letter-spacing: 0.05em;
335
+ }
336
+
337
+ .skin-img-wrap {
338
+ height: 120px;
339
+ display: flex;
340
+ align-items: center;
341
+ justify-content: center;
342
+ margin-bottom: 1rem;
343
+ }
344
+
345
+ .skin-img {
346
+ max-width: 100%;
347
+ max-height: 100%;
348
+ object-fit: contain;
349
+ }
350
+
351
+ .skin-title {
352
+ font-size: 1.05rem;
353
+ font-weight: 700;
354
+ margin-bottom: 0.35rem;
355
+ }
356
+
357
+ .skin-weapon {
358
+ font-size: 0.85rem;
359
+ color: var(--text-secondary);
360
+ }
361
+
362
+ .skin-meta {
363
+ margin-top: auto;
364
+ padding-top: 0.75rem;
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: space-between;
368
+ border-top: 1px solid var(--border);
369
+ }
370
+
371
+ .skin-price {
372
+ font-size: 1.1rem;
373
+ font-weight: 700;
374
+ color: var(--vp-gold);
375
+ }
376
+
377
+ .skin-tier-icon {
378
+ width: 22px;
379
+ height: 22px;
380
+ object-fit: contain;
381
+ }
382
+
383
+ .bundle-card {
384
+ background: var(--bg-card);
385
+ border: 1px solid var(--border);
386
+ border-radius: var(--radius-md);
387
+ overflow: hidden;
388
+ margin-bottom: 2rem;
389
+ }
390
+
391
+ .bundle-banner {
392
+ width: 100%;
393
+ max-height: 280px;
394
+ object-fit: cover;
395
+ display: block;
396
+ }
397
+
398
+ .bundle-info {
399
+ padding: 1.25rem;
400
+ display: flex;
401
+ align-items: center;
402
+ justify-content: space-between;
403
+ }
404
+
405
+ .wishlist-toolbar {
406
+ margin-bottom: 1.5rem;
407
+ }
408
+
409
+ .wishlist-input-group {
410
+ display: flex;
411
+ gap: 0.75rem;
412
+ max-width: 600px;
413
+ }
414
+
415
+ .wishlist-input-group input {
416
+ flex: 1;
417
+ background: var(--bg-card);
418
+ border: 1px solid var(--border);
419
+ color: var(--text-primary);
420
+ padding: 0.65rem 1rem;
421
+ border-radius: var(--radius-sm);
422
+ font-size: 0.95rem;
423
+ }
424
+
425
+ .wishlist-input-group input:focus {
426
+ outline: none;
427
+ border-color: var(--border-focus);
428
+ }
429
+
430
+ .btn-primary {
431
+ background: var(--accent);
432
+ color: #fff;
433
+ border: none;
434
+ font-weight: 600;
435
+ font-size: 0.95rem;
436
+ padding: 0.65rem 1.25rem;
437
+ border-radius: var(--radius-sm);
438
+ cursor: pointer;
439
+ transition: background 0.15s ease;
440
+ }
441
+
442
+ .btn-primary:hover {
443
+ background: var(--accent-light);
444
+ }
445
+
446
+ .btn-remove {
447
+ background: transparent;
448
+ border: 1px solid var(--border);
449
+ color: var(--text-muted);
450
+ font-size: 0.8rem;
451
+ font-weight: 600;
452
+ padding: 0.35rem 0.75rem;
453
+ border-radius: var(--radius-sm);
454
+ cursor: pointer;
455
+ transition: all 0.15s ease;
456
+ }
457
+
458
+ .btn-remove:hover {
459
+ color: var(--danger);
460
+ border-color: var(--danger);
461
+ }
462
+
463
+ .inline-status {
464
+ margin-top: 0.5rem;
465
+ font-size: 0.9rem;
466
+ }
467
+
468
+ .matches-list {
469
+ display: flex;
470
+ flex-direction: column;
471
+ gap: 0.75rem;
472
+ }
473
+
474
+ .match-item {
475
+ background: var(--bg-card);
476
+ border: 1px solid var(--border);
477
+ border-left: 4px solid var(--border);
478
+ border-radius: var(--radius-sm);
479
+ padding: 1rem 1.25rem;
480
+ display: grid;
481
+ grid-template-columns: 140px 180px 100px 140px 100px auto;
482
+ align-items: center;
483
+ gap: 1rem;
484
+ }
485
+
486
+ .match-item.win { border-left-color: var(--success); }
487
+ .match-item.loss { border-left-color: var(--danger); }
488
+ .match-item.draw { border-left-color: var(--text-muted); }
489
+
490
+ .match-badge {
491
+ font-size: 0.85rem;
492
+ font-weight: 800;
493
+ letter-spacing: 0.05em;
494
+ padding: 0.25rem 0.6rem;
495
+ border-radius: var(--radius-sm);
496
+ display: inline-block;
497
+ }
498
+
499
+ .match-badge.win { background: rgba(16, 185, 129, 0.2); color: var(--success); }
500
+ .match-badge.loss { background: rgba(239, 68, 68, 0.2); color: var(--danger); }
501
+ .match-badge.draw { background: rgba(156, 163, 175, 0.2); color: var(--text-secondary); }
502
+
503
+ .match-agent {
504
+ display: flex;
505
+ align-items: center;
506
+ gap: 0.75rem;
507
+ }
508
+
509
+ .agent-icon {
510
+ width: 36px;
511
+ height: 36px;
512
+ border-radius: var(--radius-sm);
513
+ object-fit: cover;
514
+ background: var(--bg-panel);
515
+ }
516
+
517
+ .match-score {
518
+ font-size: 1.15rem;
519
+ font-weight: 700;
520
+ }
521
+
522
+ .match-kda {
523
+ font-size: 0.95rem;
524
+ color: var(--text-secondary);
525
+ }
526
+
527
+ .rr-change {
528
+ font-weight: 700;
529
+ font-size: 0.95rem;
530
+ }
531
+
532
+ .rr-change.plus { color: var(--success); }
533
+ .rr-change.minus { color: var(--danger); }
534
+
535
+ .friends-list {
536
+ display: grid;
537
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
538
+ gap: 1rem;
539
+ }
540
+
541
+ .friend-card {
542
+ background: var(--bg-card);
543
+ border: 1px solid var(--border);
544
+ border-radius: var(--radius-sm);
545
+ padding: 0.85rem 1rem;
546
+ display: flex;
547
+ align-items: center;
548
+ gap: 0.85rem;
549
+ }
550
+
551
+ .presence-dot {
552
+ width: 10px;
553
+ height: 10px;
554
+ border-radius: 50%;
555
+ background: var(--text-muted);
556
+ flex-shrink: 0;
557
+ }
558
+
559
+ .presence-dot.in-game { background: var(--success); }
560
+ .presence-dot.online { background: #38bdf8; }
561
+ .presence-dot.away { background: var(--warning); }
562
+
563
+ .friend-info {
564
+ display: flex;
565
+ flex-direction: column;
566
+ }
567
+
568
+ .friend-name {
569
+ font-weight: 600;
570
+ font-size: 0.95rem;
571
+ }
572
+
573
+ .friend-activity {
574
+ font-size: 0.8rem;
575
+ color: var(--text-secondary);
576
+ }
577
+
578
+ .app-footer {
579
+ border-top: 1px solid var(--border);
580
+ padding: 2rem;
581
+ background: var(--bg-panel);
582
+ text-align: center;
583
+ font-size: 0.85rem;
584
+ color: var(--text-muted);
585
+ margin-top: auto;
586
+ }
587
+
588
+ .disclaimer {
589
+ max-width: 800px;
590
+ margin: 0 auto 1rem;
591
+ line-height: 1.4;
592
+ }
593
+
594
+ .footer-links {
595
+ display: flex;
596
+ justify-content: center;
597
+ gap: 1.5rem;
598
+ flex-wrap: wrap;
599
+ }
600
+
601
+ .footer-links a {
602
+ color: var(--text-secondary);
603
+ text-decoration: none;
604
+ transition: color 0.15s ease;
605
+ }
606
+
607
+ .footer-links a:hover {
608
+ color: var(--accent);
609
+ }
610
+
611
+ @media (max-width: 768px) {
612
+ .app-header {
613
+ flex-direction: column;
614
+ gap: 0.75rem;
615
+ padding: 1rem;
616
+ }
617
+ .nav-tabs {
618
+ flex-wrap: wrap;
619
+ justify-content: center;
620
+ }
621
+ .match-item {
622
+ grid-template-columns: 1fr;
623
+ gap: 0.5rem;
624
+ }
625
+ }
626
+ .tag { color: var(--text-muted); }
627
+ .bundle-desc { color: var(--text-secondary); font-size: 0.85rem; }
628
+ .price-strike { text-decoration: line-through; color: var(--text-muted); margin-right: 0.5rem; }
629
+ .hit-badge-inline { position: static; }
630
+ .muted-small { font-size: 0.8rem; color: var(--text-muted); }
631
+ .muted-tiny { font-size: 0.75rem; color: var(--text-muted); }
632
+ `;
633
+ }
634
+ //# sourceMappingURL=dashboardCss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboardCss.js","sourceRoot":"","sources":["../../../src/serve/dashboard/dashboardCss.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsnBR,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function renderDashboardHtml(): string;
2
+ //# sourceMappingURL=dashboardHtml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboardHtml.d.ts","sourceRoot":"","sources":["../../../src/serve/dashboard/dashboardHtml.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,IAAI,MAAM,CA6F5C"}