@testgorilla/tgo-typing-test 1.0.0 → 2.0.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 (134) hide show
  1. package/.eslintrc.json +46 -0
  2. package/jest.config.ts +21 -0
  3. package/ng-package.json +15 -0
  4. package/package.json +7 -22
  5. package/project.json +36 -0
  6. package/src/lib/components/tgo-typing-replay-input/tgo-typing-replay-input.component.html +30 -0
  7. package/src/lib/components/tgo-typing-replay-input/tgo-typing-replay-input.component.spec.ts +250 -0
  8. package/src/lib/components/tgo-typing-replay-input/tgo-typing-replay-input.component.ts +47 -0
  9. package/src/lib/components/tgo-typing-test/tgo-typing-test.component.html +72 -0
  10. package/src/lib/components/tgo-typing-test/tgo-typing-test.component.spec.ts +699 -0
  11. package/src/lib/components/tgo-typing-test/tgo-typing-test.component.ts +287 -0
  12. package/src/lib/helpers/config.ts +28 -0
  13. package/src/lib/helpers/constants/default-config.ts +103 -0
  14. package/src/lib/helpers/controllers/input-controller.ts +710 -0
  15. package/src/lib/helpers/controllers/quotes-controller.ts +183 -0
  16. package/src/lib/helpers/observables/banner-event.ts +18 -0
  17. package/src/lib/helpers/observables/config-event.ts +31 -0
  18. package/src/lib/helpers/observables/timer-event.ts +18 -0
  19. package/src/lib/helpers/states/active-page.ts +9 -0
  20. package/src/lib/helpers/states/composition.ts +29 -0
  21. package/src/lib/helpers/states/page-transition.ts +9 -0
  22. package/src/lib/helpers/states/slow-timer.ts +16 -0
  23. package/src/lib/helpers/states/test-active.ts +9 -0
  24. package/src/lib/helpers/states/time.ts +13 -0
  25. package/src/lib/helpers/test/caps-warning.ts +50 -0
  26. package/src/lib/helpers/test/caret.ts +92 -0
  27. package/src/lib/helpers/test/custom-text.ts +73 -0
  28. package/src/lib/helpers/test/english-punctuation.ts +38 -0
  29. package/src/lib/helpers/test/focus.ts +39 -0
  30. package/src/lib/helpers/test/manual-restart-tracker.ts +13 -0
  31. package/src/lib/helpers/test/out-of-focus.ts +19 -0
  32. package/src/lib/helpers/test/replay.ts +265 -0
  33. package/src/lib/helpers/test/test-input.ts +320 -0
  34. package/src/lib/helpers/test/test-logic.ts +1039 -0
  35. package/src/lib/helpers/test/test-state.ts +17 -0
  36. package/src/lib/helpers/test/test-stats.ts +442 -0
  37. package/src/lib/helpers/test/test-timer.ts +209 -0
  38. package/src/lib/helpers/test/test-ui.ts +370 -0
  39. package/src/lib/helpers/test/test-words.ts +72 -0
  40. package/src/lib/helpers/test/timer-progress.ts +16 -0
  41. package/src/lib/helpers/test/tts.ts +42 -0
  42. package/src/lib/helpers/test/weak-spot.ts +74 -0
  43. package/src/lib/helpers/test/wordset.ts +109 -0
  44. package/src/lib/styles/animations.scss +101 -0
  45. package/src/lib/styles/caret.scss +108 -0
  46. package/src/lib/styles/core.scss +498 -0
  47. package/src/lib/styles/index.scss +19 -0
  48. package/src/lib/styles/inputs.scss +290 -0
  49. package/src/lib/styles/popups.scss +1311 -0
  50. package/src/lib/styles/test.scss +1008 -0
  51. package/src/lib/styles/z_media-queries.scss +848 -0
  52. package/src/lib/types/types.d.ts +731 -0
  53. package/src/lib/utils/misc.ts +776 -0
  54. package/src/test-setup.ts +20 -0
  55. package/tsconfig.json +16 -0
  56. package/tsconfig.lib.json +14 -0
  57. package/tsconfig.lib.prod.json +9 -0
  58. package/tsconfig.spec.json +11 -0
  59. package/esm2022/index.mjs +0 -3
  60. package/esm2022/lib/components/tgo-typing-replay-input/tgo-typing-replay-input.component.mjs +0 -45
  61. package/esm2022/lib/components/tgo-typing-test/tgo-typing-test.component.mjs +0 -299
  62. package/esm2022/lib/helpers/config.mjs +0 -24
  63. package/esm2022/lib/helpers/constants/default-config.mjs +0 -103
  64. package/esm2022/lib/helpers/controllers/input-controller.mjs +0 -586
  65. package/esm2022/lib/helpers/controllers/quotes-controller.mjs +0 -118
  66. package/esm2022/lib/helpers/observables/config-event.mjs +0 -16
  67. package/esm2022/lib/helpers/observables/timer-event.mjs +0 -16
  68. package/esm2022/lib/helpers/states/active-page.mjs +0 -8
  69. package/esm2022/lib/helpers/states/composition.mjs +0 -20
  70. package/esm2022/lib/helpers/states/page-transition.mjs +0 -8
  71. package/esm2022/lib/helpers/states/slow-timer.mjs +0 -15
  72. package/esm2022/lib/helpers/states/test-active.mjs +0 -8
  73. package/esm2022/lib/helpers/states/time.mjs +0 -11
  74. package/esm2022/lib/helpers/test/caps-warning.mjs +0 -50
  75. package/esm2022/lib/helpers/test/caret.mjs +0 -80
  76. package/esm2022/lib/helpers/test/custom-text.mjs +0 -59
  77. package/esm2022/lib/helpers/test/english-punctuation.mjs +0 -29
  78. package/esm2022/lib/helpers/test/focus.mjs +0 -35
  79. package/esm2022/lib/helpers/test/manual-restart-tracker.mjs +0 -11
  80. package/esm2022/lib/helpers/test/out-of-focus.mjs +0 -14
  81. package/esm2022/lib/helpers/test/replay.mjs +0 -217
  82. package/esm2022/lib/helpers/test/test-input.mjs +0 -264
  83. package/esm2022/lib/helpers/test/test-logic.mjs +0 -927
  84. package/esm2022/lib/helpers/test/test-state.mjs +0 -13
  85. package/esm2022/lib/helpers/test/test-stats.mjs +0 -342
  86. package/esm2022/lib/helpers/test/test-timer.mjs +0 -207
  87. package/esm2022/lib/helpers/test/test-ui.mjs +0 -341
  88. package/esm2022/lib/helpers/test/test-words.mjs +0 -69
  89. package/esm2022/lib/helpers/test/timer-progress.mjs +0 -15
  90. package/esm2022/lib/helpers/test/weak-spot.mjs +0 -65
  91. package/esm2022/lib/helpers/test/wordset.mjs +0 -100
  92. package/esm2022/lib/utils/misc.mjs +0 -673
  93. package/esm2022/testgorilla-tgo-typing-test.mjs +0 -5
  94. package/fesm2022/testgorilla-tgo-typing-test.mjs +0 -4707
  95. package/fesm2022/testgorilla-tgo-typing-test.mjs.map +0 -1
  96. package/lib/components/tgo-typing-replay-input/tgo-typing-replay-input.component.d.ts +0 -14
  97. package/lib/components/tgo-typing-test/tgo-typing-test.component.d.ts +0 -54
  98. package/lib/helpers/config.d.ts +0 -98
  99. package/lib/helpers/constants/default-config.d.ts +0 -3
  100. package/lib/helpers/controllers/input-controller.d.ts +0 -16
  101. package/lib/helpers/controllers/quotes-controller.d.ts +0 -20
  102. package/lib/helpers/observables/config-event.d.ts +0 -5
  103. package/lib/helpers/observables/timer-event.d.ts +0 -4
  104. package/lib/helpers/states/active-page.d.ts +0 -2
  105. package/lib/helpers/states/composition.d.ts +0 -10
  106. package/lib/helpers/states/page-transition.d.ts +0 -2
  107. package/lib/helpers/states/slow-timer.d.ts +0 -3
  108. package/lib/helpers/states/test-active.d.ts +0 -2
  109. package/lib/helpers/states/time.d.ts +0 -3
  110. package/lib/helpers/test/caps-warning.d.ts +0 -5
  111. package/lib/helpers/test/caret.d.ts +0 -11
  112. package/lib/helpers/test/custom-text.d.ts +0 -16
  113. package/lib/helpers/test/english-punctuation.d.ts +0 -3
  114. package/lib/helpers/test/focus.d.ts +0 -7
  115. package/lib/helpers/test/manual-restart-tracker.d.ts +0 -3
  116. package/lib/helpers/test/out-of-focus.d.ts +0 -4
  117. package/lib/helpers/test/replay.d.ts +0 -20
  118. package/lib/helpers/test/test-input.d.ts +0 -86
  119. package/lib/helpers/test/test-logic.d.ts +0 -25
  120. package/lib/helpers/test/test-state.d.ts +0 -7
  121. package/lib/helpers/test/test-stats.d.ts +0 -92
  122. package/lib/helpers/test/test-timer.d.ts +0 -6
  123. package/lib/helpers/test/test-ui.d.ts +0 -27
  124. package/lib/helpers/test/test-words.d.ts +0 -23
  125. package/lib/helpers/test/timer-progress.d.ts +0 -3
  126. package/lib/helpers/test/weak-spot.d.ts +0 -3
  127. package/lib/helpers/test/wordset.d.ts +0 -7
  128. package/lib/utils/misc.d.ts +0 -81
  129. /package/{assets → src/assets}/typing-test-languages/english.json +0 -0
  130. /package/{assets → src/assets}/typing-test-languages/english_punctuation.json +0 -0
  131. /package/{assets → src/assets}/typing-test-languages/quotes/english_version_1.json +0 -0
  132. /package/{assets → src/assets}/typing-test-languages/quotes/english_version_2.json +0 -0
  133. /package/{assets → src/assets}/typing-test-languages/quotes/filtered_sources.json +0 -0
  134. /package/{index.d.ts → src/index.ts} +0 -0
@@ -0,0 +1,1311 @@
1
+ .popupWrapper {
2
+ width: 100%;
3
+ height: 100%;
4
+ background: rgba(0, 0, 0, 0.75);
5
+ position: fixed;
6
+ left: 0;
7
+ top: 0;
8
+ z-index: 1000;
9
+ display: grid;
10
+ justify-content: center;
11
+ align-items: center;
12
+ padding: 2rem 0;
13
+ }
14
+
15
+ #customTextPopupWrapper {
16
+ #customTextPopup {
17
+ background: $--bg-color;
18
+ border-radius: $--roundness;
19
+ padding: 2rem;
20
+ display: grid;
21
+ gap: 1rem;
22
+ width: 60vw;
23
+
24
+ .buttonsTop {
25
+ display: grid;
26
+ grid-template-columns: 1fr 1fr 1fr;
27
+ gap: 1rem;
28
+ }
29
+
30
+ .savedTexts {
31
+ display: grid;
32
+ gap: 0.5rem;
33
+ .title {
34
+ color: $--sub-color;
35
+ }
36
+ .buttons {
37
+ display: grid;
38
+ grid-template-columns: 1fr 1fr;
39
+ gap: 1rem;
40
+ }
41
+ }
42
+
43
+ textarea {
44
+ background: $--sub-alt-color;
45
+ padding: 1rem;
46
+ color: $--main-color;
47
+ border: none;
48
+ outline: none;
49
+ font-size: 1rem;
50
+ font-family: $--font;
51
+ width: 100%;
52
+ border-radius: $--roundness;
53
+ resize: vertical;
54
+ height: 200px;
55
+ color: $--text-color;
56
+ overflow-x: hidden;
57
+ overflow-y: scroll;
58
+ }
59
+
60
+ .inputs {
61
+ display: grid;
62
+ grid-template-columns: 1fr 1fr;
63
+ gap: 1rem;
64
+ align-items: center;
65
+ justify-items: left;
66
+ }
67
+
68
+ .randomInputFields {
69
+ display: grid;
70
+ grid-template-columns: 1fr auto 1fr;
71
+ text-align: center;
72
+ align-items: center;
73
+ width: 100%;
74
+ gap: 1rem;
75
+ }
76
+ }
77
+ }
78
+
79
+ #savedTextsPopupWrapper {
80
+ #savedTextsPopup {
81
+ color: $--sub-color;
82
+ background: $--bg-color;
83
+ border-radius: $--roundness;
84
+ padding: 2rem;
85
+ display: grid;
86
+ gap: 1rem;
87
+ width: 400px;
88
+ max-height: 80vh;
89
+ overflow: auto;
90
+
91
+ .title {
92
+ font-size: 1.5rem;
93
+ color: $--sub-color;
94
+ }
95
+
96
+ .list {
97
+ display: grid;
98
+ gap: 1rem;
99
+ .savedText {
100
+ display: grid;
101
+ gap: 0.5rem;
102
+ grid-template-columns: 1fr 3rem;
103
+ .button .fas {
104
+ pointer-events: none;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ #wordFilterPopupWrapper {
112
+ #wordFilterPopup {
113
+ color: $--sub-color;
114
+ background: $--bg-color;
115
+ border-radius: $--roundness;
116
+ padding: 2rem;
117
+ display: grid;
118
+ gap: 1rem;
119
+ width: 400px;
120
+
121
+ input {
122
+ width: 100%;
123
+ }
124
+
125
+ .group {
126
+ display: grid;
127
+ gap: 0.5rem;
128
+ }
129
+
130
+ .lengthgrid {
131
+ display: grid;
132
+ grid-template-columns: 1fr 1fr;
133
+ grid-template-rows: auto 1fr;
134
+ column-gap: 1rem;
135
+ }
136
+
137
+ .tip {
138
+ color: $--sub-color;
139
+ font-size: 0.8rem;
140
+ }
141
+
142
+ .loadingIndicator {
143
+ justify-self: center;
144
+ }
145
+ }
146
+ }
147
+
148
+ #quoteRatePopupWrapper {
149
+ #quoteRatePopup {
150
+ color: $--sub-color;
151
+ background: $--bg-color;
152
+ border-radius: $--roundness;
153
+ padding: 2rem;
154
+ display: grid;
155
+ gap: 2rem;
156
+ width: 800px;
157
+
158
+ display: grid;
159
+ grid-template-areas: "warning warning warning" "spacer2 spacer2 spacer2" "ratingStats ratingStats submitButton" "spacer spacer spacer" "quote quote quote";
160
+ grid-template-columns: auto 1fr;
161
+
162
+ color: $--text-color;
163
+
164
+ .warning {
165
+ grid-area: warning;
166
+ span {
167
+ color: $--error-color;
168
+ }
169
+ }
170
+ .spacer,
171
+ .spacer2 {
172
+ grid-area: spacer;
173
+ width: 100%;
174
+ height: 0.1rem;
175
+ border-radius: $--roundness;
176
+ background: $--sub-color;
177
+ opacity: 0.25;
178
+ }
179
+
180
+ .spacer2 {
181
+ grid-area: spacer2;
182
+ }
183
+
184
+ .submitButton {
185
+ font-size: 2rem;
186
+ grid-area: submitButton;
187
+ color: $--sub-color;
188
+ &:hover {
189
+ color: $--text-color;
190
+ }
191
+ }
192
+
193
+ .top {
194
+ color: $--sub-color;
195
+ font-size: 0.8rem;
196
+ }
197
+
198
+ .ratingStats {
199
+ display: grid;
200
+ grid-template-columns: 1fr 1fr 1fr;
201
+ gap: 1rem;
202
+ grid-area: ratingStats;
203
+ .top {
204
+ font-size: 1rem;
205
+ }
206
+ .val {
207
+ font-size: 2.25rem;
208
+ }
209
+ }
210
+
211
+ .quote {
212
+ display: grid;
213
+ grid-area: quote;
214
+ gap: 1rem;
215
+ grid-template-areas:
216
+ "text text text"
217
+ "id length source";
218
+ grid-template-columns: 1fr 1fr 3fr;
219
+ .text {
220
+ grid-area: text;
221
+ }
222
+ .id {
223
+ grid-area: id;
224
+ }
225
+ .length {
226
+ grid-area: length;
227
+ }
228
+ .source {
229
+ grid-area: source;
230
+ }
231
+ }
232
+
233
+ .stars {
234
+ display: grid;
235
+ color: $--sub-color;
236
+ font-size: 2rem;
237
+ grid-template-columns: auto auto auto auto auto;
238
+ justify-content: flex-start;
239
+ align-items: center;
240
+ cursor: pointer;
241
+ }
242
+ .star {
243
+ transition: 0.125s;
244
+ }
245
+ i {
246
+ pointer-events: none;
247
+ }
248
+ .star.active {
249
+ color: $--text-color;
250
+ }
251
+ }
252
+ }
253
+
254
+ #simplePopupWrapper {
255
+ #simplePopup {
256
+ background: $--bg-color;
257
+ border-radius: $--roundness;
258
+ padding: 2rem;
259
+ display: grid;
260
+ gap: 1rem;
261
+ width: 400px;
262
+
263
+ .title {
264
+ font-size: 1.5rem;
265
+ color: $--sub-color;
266
+ }
267
+
268
+ .inputs {
269
+ display: grid;
270
+ gap: 1rem;
271
+ }
272
+
273
+ .text {
274
+ font-size: 1rem;
275
+ color: $--text-color;
276
+ }
277
+ }
278
+ }
279
+
280
+ #mobileTestConfigPopupWrapper {
281
+ #mobileTestConfigPopup {
282
+ background: $--bg-color;
283
+ border-radius: $--roundness;
284
+ padding: 1rem;
285
+ display: grid;
286
+ gap: 1rem;
287
+ width: calc(100vw - 2rem);
288
+ max-width: 400px;
289
+
290
+ .title {
291
+ font-size: 1.5rem;
292
+ color: $--sub-color;
293
+ }
294
+
295
+ .inputs {
296
+ display: grid;
297
+ gap: 1rem;
298
+ }
299
+
300
+ .text {
301
+ font-size: 1rem;
302
+ color: $--text-color;
303
+ }
304
+
305
+ .group {
306
+ display: grid;
307
+ gap: 0.5rem;
308
+ }
309
+ }
310
+ }
311
+
312
+ #customWordAmountPopupWrapper,
313
+ #customTestDurationPopupWrapper,
314
+ #practiseWordsPopupWrapper,
315
+ #pbTablesPopupWrapper {
316
+ #customWordAmountPopup,
317
+ #customTestDurationPopup,
318
+ #practiseWordsPopup,
319
+ #pbTablesPopup {
320
+ background: $--bg-color;
321
+ border-radius: $--roundness;
322
+ padding: 2rem;
323
+ display: grid;
324
+ gap: 1rem;
325
+ width: 400px;
326
+
327
+ .title {
328
+ font-size: 1.5rem;
329
+ color: $--sub-color;
330
+ }
331
+
332
+ .tip {
333
+ font-size: 0.75rem;
334
+ color: $--sub-color;
335
+ }
336
+
337
+ .text {
338
+ font-size: 1rem;
339
+ color: $--text-color;
340
+ }
341
+ }
342
+
343
+ #customTestDurationPopup {
344
+ .preview {
345
+ font-size: 0.75rem;
346
+ color: $--sub-color;
347
+ }
348
+ }
349
+ }
350
+
351
+ #googleSignUpPopup {
352
+ background: $--bg-color;
353
+ border-radius: $--roundness;
354
+ padding: 2rem;
355
+ display: grid;
356
+ gap: 1rem;
357
+ width: 400px;
358
+ .title {
359
+ font-size: 1.5rem;
360
+ color: $--sub-color;
361
+ }
362
+ .inputAndIndicator {
363
+ input {
364
+ width: 100%;
365
+ }
366
+ position: relative;
367
+ .checkStatus {
368
+ width: 2.25rem;
369
+ height: 2.25rem;
370
+ position: absolute;
371
+ right: 0;
372
+ top: 0;
373
+ display: grid;
374
+ grid-template-columns: 2.25rem;
375
+ grid-template-rows: 2.25rem;
376
+ place-items: center center;
377
+ cursor: pointer;
378
+
379
+ .checking,
380
+ .available,
381
+ .unavailable,
382
+ .taken {
383
+ grid-column: 1/2;
384
+ grid-row: 1/2;
385
+ }
386
+ .checking {
387
+ color: $--sub-color;
388
+ }
389
+ .available {
390
+ color: $--main-color;
391
+ }
392
+ .unavailable,
393
+ .taken {
394
+ color: $--error-color;
395
+ }
396
+ }
397
+ }
398
+ }
399
+
400
+ #shareTestSettingsPopup {
401
+ background: $--bg-color;
402
+ border-radius: $--roundness;
403
+ padding: 2rem;
404
+ display: grid;
405
+ gap: 1rem;
406
+ width: 500px;
407
+ .title {
408
+ font-size: 1.5rem;
409
+ color: $--sub-color;
410
+ }
411
+ .subgroup {
412
+ padding-left: 2rem;
413
+ }
414
+ .tooLongWarning {
415
+ font-size: 0.75rem;
416
+ color: $--error-color;
417
+ }
418
+ }
419
+ #cookiePopupWrapper {
420
+ .extensionMessage {
421
+ position: fixed;
422
+ right: 2rem;
423
+ bottom: 2rem;
424
+ padding: 1rem;
425
+ width: 465px;
426
+ font-size: 0.75rem;
427
+ }
428
+ #cookiePopup {
429
+ position: fixed;
430
+ right: 2rem;
431
+ bottom: 2rem;
432
+ background: $--bg-color;
433
+ border-radius: $--roundness;
434
+ padding: 2rem;
435
+ display: grid;
436
+ gap: 1rem;
437
+ width: 465px;
438
+ z-index: 100000001;
439
+ user-select: none;
440
+ .main {
441
+ display: grid;
442
+ gap: 1rem;
443
+ }
444
+ .title {
445
+ font-size: 1.5rem;
446
+ color: $--sub-color;
447
+ }
448
+ .buttons {
449
+ margin-top: 0.25rem;
450
+ display: grid;
451
+ grid-auto-flow: column;
452
+ gap: 1rem;
453
+ grid-template-columns: 1fr 2.25rem;
454
+ }
455
+ .settings {
456
+ display: grid;
457
+ gap: 1rem;
458
+ .customTextCheckbox {
459
+ background: $--sub-color;
460
+ }
461
+ .cookie label {
462
+ display: grid;
463
+ gap: 0 1rem;
464
+ grid-template-columns: 1fr min-content;
465
+ grid-template-areas:
466
+ "title check"
467
+ "description check";
468
+ .title {
469
+ grid-area: title;
470
+ font-size: 1.25rem;
471
+ }
472
+ .description {
473
+ grid-area: description;
474
+ }
475
+ .customTextCheckbox {
476
+ place-self: center;
477
+ grid-area: check;
478
+ }
479
+ }
480
+ .cookie.ads label {
481
+ grid-template-columns: 1fr;
482
+ grid-template-areas:
483
+ "title"
484
+ "description";
485
+ a {
486
+ margin-top: 0.25rem;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ }
492
+
493
+ #videoAdPopupWrapper {
494
+ display: flex;
495
+ padding: 2rem;
496
+ #videoAdPopup {
497
+ background: $--bg-color;
498
+ border-radius: $--roundness;
499
+ padding: 2rem;
500
+ display: grid;
501
+ gap: 1rem;
502
+ width: 100%;
503
+ max-width: 1000px;
504
+ aspect-ratio: 16/9;
505
+ display: grid;
506
+ grid-template-areas: "middle";
507
+ .preloader {
508
+ grid-area: middle;
509
+ display: grid;
510
+ place-items: center center;
511
+ gap: 1rem;
512
+ font-size: 2rem;
513
+ color: $--main-color;
514
+ height: max-content;
515
+ align-self: center;
516
+ }
517
+ .video {
518
+ grid-area: middle;
519
+ }
520
+ }
521
+ }
522
+
523
+ #pbTablesPopupWrapper #pbTablesPopup {
524
+ .title {
525
+ color: $--text-color;
526
+ }
527
+ min-width: 50rem;
528
+ max-height: calc(100vh - 10rem);
529
+ overflow-y: scroll;
530
+ table {
531
+ border-spacing: 0;
532
+ border-collapse: collapse;
533
+ color: $--text-color;
534
+
535
+ td {
536
+ padding: 0.5rem 0.5rem;
537
+ }
538
+
539
+ thead {
540
+ color: $--sub-color;
541
+ font-size: 0.75rem;
542
+ }
543
+
544
+ tbody tr:nth-child(odd) td {
545
+ background: $--sub-alt-color;
546
+ }
547
+
548
+ td.infoIcons span {
549
+ margin: 0 0.1rem;
550
+ }
551
+ .miniResultChartButton {
552
+ opacity: 0.25;
553
+ transition: 0.25s;
554
+ cursor: pointer;
555
+ &:hover {
556
+ opacity: 1;
557
+ }
558
+ }
559
+ .sub {
560
+ opacity: 0.5;
561
+ }
562
+ td {
563
+ text-align: right;
564
+ }
565
+ td:nth-child(6),
566
+ td:nth-child(7) {
567
+ text-align: center;
568
+ }
569
+ tbody td:nth-child(1) {
570
+ font-size: 1.5rem;
571
+ }
572
+ }
573
+ }
574
+
575
+ #customThemeShareWrapper {
576
+ #customThemeShare {
577
+ width: 50vw;
578
+ background: $--bg-color;
579
+ border-radius: $--roundness;
580
+ padding: 2rem;
581
+ display: grid;
582
+ gap: 1rem;
583
+ overflow-y: scroll;
584
+ }
585
+ }
586
+
587
+ #quoteSearchPopupWrapper {
588
+ .highlight {
589
+ color: $--main-color;
590
+ }
591
+
592
+ #quoteSearchPopup {
593
+ background: $--bg-color;
594
+ border-radius: $--roundness;
595
+ padding: 2rem;
596
+ display: grid;
597
+ gap: 1rem;
598
+ width: 80vw;
599
+ max-width: 1000px;
600
+ height: 80vh;
601
+ grid-template-rows: auto auto auto 1fr;
602
+
603
+ #quoteSearchTop {
604
+ display: flex;
605
+ justify-content: space-between;
606
+
607
+ .title {
608
+ font-size: 1.5rem;
609
+ color: $--sub-color;
610
+ }
611
+
612
+ .buttons {
613
+ width: 33%;
614
+ display: grid;
615
+ gap: 0.5rem;
616
+ .button {
617
+ width: 100%;
618
+ }
619
+ }
620
+ }
621
+
622
+ #quoteSearchControlsWrapper {
623
+ display: grid;
624
+ grid-template-columns: 1.5fr 1fr max-content;
625
+ gap: 1rem;
626
+
627
+ #searchBox {
628
+ width: 100%;
629
+ }
630
+
631
+ #toggleShowFavorites {
632
+ height: 100%;
633
+ display: flex;
634
+ align-items: center;
635
+ justify-content: center;
636
+ padding: 0.4rem 1rem;
637
+ }
638
+ }
639
+
640
+ #extraResults {
641
+ text-align: center;
642
+ color: $--sub-color;
643
+ }
644
+ #quoteSearchResults {
645
+ display: grid;
646
+ gap: 0.5rem;
647
+ height: auto;
648
+ overflow-y: scroll;
649
+ align-content: baseline;
650
+
651
+ .searchResult {
652
+ display: grid;
653
+ grid-template-columns: 1fr 1fr 3fr 0fr 0fr;
654
+ grid-template-areas:
655
+ "text text text text text"
656
+ "id len source report favorite";
657
+ grid-auto-rows: auto;
658
+ width: 100%;
659
+ gap: 0.5rem;
660
+ transition: 0.25s;
661
+ padding: 1rem;
662
+ box-sizing: border-box;
663
+ user-select: none;
664
+ cursor: pointer;
665
+ height: min-content;
666
+
667
+ .text {
668
+ grid-area: text;
669
+ overflow: visible;
670
+ color: $--text-color;
671
+ }
672
+ .id {
673
+ grid-area: id;
674
+ font-size: 0.8rem;
675
+ color: $--sub-color;
676
+ }
677
+ .length {
678
+ grid-area: len;
679
+ font-size: 0.8rem;
680
+ color: $--sub-color;
681
+ }
682
+ .source {
683
+ grid-area: source;
684
+ font-size: 0.8rem;
685
+ color: $--sub-color;
686
+ }
687
+ .resultChevron {
688
+ grid-area: chevron;
689
+ display: flex;
690
+ align-items: center;
691
+ justify-items: center;
692
+ color: $--sub-color;
693
+ font-size: 2rem;
694
+ }
695
+ .report {
696
+ grid-area: report;
697
+ color: $--sub-color;
698
+ transition: 0.25s;
699
+ &:hover {
700
+ color: $--text-color;
701
+ }
702
+ }
703
+ .favorite {
704
+ grid-area: favorite;
705
+ color: $--sub-color;
706
+ transition: 0.25s;
707
+ &:hover {
708
+ color: $--text-color;
709
+ }
710
+ }
711
+ .sub {
712
+ opacity: 0.5;
713
+ }
714
+ }
715
+ .searchResult:hover {
716
+ background: $--sub-alt-color;
717
+ border-radius: 5px;
718
+ }
719
+ }
720
+ }
721
+ }
722
+ #settingsImportWrapper {
723
+ #settingsImport {
724
+ width: 50vw;
725
+ background: $--bg-color;
726
+ border-radius: $--roundness;
727
+ padding: 2rem;
728
+ display: grid;
729
+ gap: 1rem;
730
+ overflow-y: scroll;
731
+ }
732
+ }
733
+
734
+ #quoteSubmitPopup {
735
+ background: $--bg-color;
736
+ border-radius: $--roundness;
737
+ padding: 2rem;
738
+ display: grid;
739
+ gap: 1rem;
740
+ width: 1000px;
741
+ grid-template-rows: auto auto auto auto auto auto auto auto auto;
742
+ height: 100%;
743
+ max-height: 40rem;
744
+ overflow-y: scroll;
745
+
746
+ label {
747
+ color: $--sub-color;
748
+ margin-bottom: -1rem;
749
+ }
750
+
751
+ .title {
752
+ font-size: 1.5rem;
753
+ color: $--sub-color;
754
+ }
755
+ textarea {
756
+ resize: vertical;
757
+ width: 100%;
758
+ padding: 10px;
759
+ line-height: 1.2rem;
760
+ min-height: 5rem;
761
+ }
762
+ .characterCount {
763
+ position: absolute;
764
+ top: -1.25rem;
765
+ right: 0.25rem;
766
+ color: $--sub-color;
767
+ user-select: none;
768
+ &.red {
769
+ color: $--error-color;
770
+ }
771
+ }
772
+ }
773
+
774
+ #apeKeysPopup {
775
+ background: $--bg-color;
776
+ border-radius: $--roundness;
777
+ padding: 2rem;
778
+ display: grid;
779
+ gap: 1rem;
780
+ width: 1000px;
781
+ max-width: calc(100vw - 4rem);
782
+ min-height: 18rem;
783
+ overflow-y: scroll;
784
+ grid-template-rows: max-content auto;
785
+ align-items: baseline;
786
+ gap: 1rem;
787
+
788
+ .top {
789
+ display: grid;
790
+ grid-template-columns: 1fr auto;
791
+ .title {
792
+ font-size: 1.5rem;
793
+ color: $--sub-color;
794
+ }
795
+ .button {
796
+ padding: 0.4rem 2rem;
797
+ }
798
+ }
799
+
800
+ .textButton {
801
+ justify-content: center;
802
+ }
803
+
804
+ .keyButtons {
805
+ display: grid;
806
+ grid-auto-flow: column;
807
+ gap: 1rem;
808
+ .button {
809
+ width: 3rem;
810
+ }
811
+ }
812
+
813
+ table {
814
+ width: 100%;
815
+ border-spacing: 0;
816
+ border-collapse: collapse;
817
+
818
+ tr td:first-child {
819
+ text-align: center;
820
+ }
821
+
822
+ tr.me {
823
+ td {
824
+ color: $--main-color;
825
+ }
826
+ }
827
+
828
+ td {
829
+ padding: 0.5rem 0.5rem;
830
+ }
831
+
832
+ thead {
833
+ color: $--sub-color;
834
+ font-size: 0.75rem;
835
+
836
+ td {
837
+ padding: 0.5rem;
838
+ background: $--bg-color;
839
+ position: -webkit-sticky;
840
+ position: sticky;
841
+ top: 0;
842
+ z-index: 99;
843
+ }
844
+ }
845
+
846
+ tbody {
847
+ color: $--text-color;
848
+
849
+ tr:nth-child(odd) td {
850
+ background: $--sub-alt-color;
851
+ }
852
+ }
853
+
854
+ tfoot {
855
+ td {
856
+ padding: 1rem 0.5rem;
857
+ position: -webkit-sticky;
858
+ position: sticky;
859
+ bottom: -5px;
860
+ background: $--bg-color;
861
+ color: $--main-color;
862
+ z-index: 4;
863
+ }
864
+ }
865
+
866
+ tr {
867
+ td:first-child {
868
+ padding-left: 1rem;
869
+ }
870
+ td:last-child {
871
+ padding-right: 1rem;
872
+ }
873
+ }
874
+ }
875
+ }
876
+
877
+ #quoteApprovePopup {
878
+ background: $--bg-color;
879
+ border-radius: $--roundness;
880
+ padding: 2rem;
881
+ display: grid;
882
+ gap: 1rem;
883
+ width: 1000px;
884
+ height: 80vh;
885
+ grid-template-rows: auto 1fr;
886
+
887
+ .top {
888
+ display: flex;
889
+ justify-content: space-between;
890
+ .title {
891
+ font-size: 1.5rem;
892
+ color: $--sub-color;
893
+ }
894
+ .button {
895
+ width: 33%;
896
+ }
897
+ }
898
+
899
+ .quotes {
900
+ display: grid;
901
+ gap: 1rem;
902
+ height: auto;
903
+ overflow-y: scroll;
904
+ align-content: baseline;
905
+
906
+ .quote {
907
+ display: grid;
908
+ grid-template-columns: 1fr auto;
909
+ grid-auto-rows: auto 2rem;
910
+ width: 100%;
911
+ gap: 1rem;
912
+ transition: 0.25s;
913
+ box-sizing: border-box;
914
+ user-select: none;
915
+ height: min-content;
916
+ margin-bottom: 1rem;
917
+
918
+ .text {
919
+ grid-column: 1/2;
920
+ grid-row: 1/2;
921
+ overflow: visible;
922
+ color: $--text-color;
923
+ resize: vertical;
924
+ min-height: 4rem;
925
+ }
926
+ .source {
927
+ grid-column: 1/2;
928
+ grid-row: 2/3;
929
+ color: $--text-color;
930
+ }
931
+ .buttons {
932
+ display: flex;
933
+ flex-direction: column;
934
+ justify-content: center;
935
+ margin-right: 1rem;
936
+ grid-column: 2/3;
937
+ grid-row: 1/4;
938
+ color: $--sub-color;
939
+ }
940
+
941
+ .bottom {
942
+ display: flex;
943
+ justify-content: space-around;
944
+ color: $--sub-color;
945
+ .length.red {
946
+ color: $--error-color;
947
+ }
948
+ }
949
+
950
+ .sub {
951
+ opacity: 0.5;
952
+ }
953
+ }
954
+ .searchResult:hover {
955
+ background: $--sub-alt-color;
956
+ border-radius: 5px;
957
+ }
958
+ }
959
+ }
960
+
961
+ #quoteReportPopupWrapper {
962
+ #quoteReportPopup {
963
+ background: $--bg-color;
964
+ border-radius: $--roundness;
965
+ padding: 2rem;
966
+ display: grid;
967
+ gap: 1rem;
968
+ grid-template-rows: auto auto auto auto auto auto auto auto auto;
969
+ height: auto;
970
+ max-height: 40rem;
971
+ overflow-y: scroll;
972
+ width: calc(100% - 4rem);
973
+ margin-left: 2rem;
974
+ max-width: 800px;
975
+
976
+ label {
977
+ color: $--sub-color;
978
+ margin-bottom: -1rem;
979
+ }
980
+
981
+ .quote {
982
+ font-size: 1.5rem;
983
+ }
984
+
985
+ .title {
986
+ font-size: 1.5rem;
987
+ color: $--sub-color;
988
+ }
989
+
990
+ textarea {
991
+ resize: vertical;
992
+ width: 100%;
993
+ padding: 10px;
994
+ line-height: 1.2rem;
995
+ min-height: 5rem;
996
+ }
997
+
998
+ .characterCount {
999
+ position: absolute;
1000
+ top: -1.25rem;
1001
+ right: 0.25rem;
1002
+ color: $--sub-color;
1003
+ user-select: none;
1004
+ &.red {
1005
+ color: $--error-color;
1006
+ }
1007
+ }
1008
+ }
1009
+ }
1010
+
1011
+ #resultEditTagsPanelWrapper {
1012
+ #resultEditTagsPanel {
1013
+ background: $--bg-color;
1014
+ border-radius: $--roundness;
1015
+ padding: 2rem;
1016
+ display: grid;
1017
+ gap: 1rem;
1018
+ overflow-y: scroll;
1019
+ width: 500px;
1020
+
1021
+ .buttons {
1022
+ display: grid;
1023
+ gap: 1rem;
1024
+ grid-template-columns: 1fr 1fr 1fr;
1025
+ }
1026
+ }
1027
+ }
1028
+
1029
+ #versionHistoryWrapper {
1030
+ width: 100%;
1031
+ height: 100%;
1032
+ background: rgba(0, 0, 0, 0.75);
1033
+ position: fixed;
1034
+ left: 0;
1035
+ top: 0;
1036
+ z-index: 1000;
1037
+ display: grid;
1038
+ justify-content: center;
1039
+ align-items: start;
1040
+ padding: 5rem 0;
1041
+
1042
+ #versionHistory {
1043
+ width: 75vw;
1044
+ height: 100%;
1045
+ background: $--bg-color;
1046
+ border-radius: $--roundness;
1047
+ padding: 2rem;
1048
+ display: grid;
1049
+ gap: 1rem;
1050
+ @extend .ffscroll;
1051
+ overflow-y: scroll;
1052
+
1053
+ .tip {
1054
+ text-align: center;
1055
+ color: $--sub-color;
1056
+ }
1057
+
1058
+ .releases {
1059
+ display: grid;
1060
+ gap: 4rem;
1061
+
1062
+ .release {
1063
+ display: grid;
1064
+ grid-template-areas:
1065
+ "title date"
1066
+ "body body";
1067
+
1068
+ .title {
1069
+ grid-area: title;
1070
+ font-size: 2rem;
1071
+ color: $--sub-color;
1072
+ }
1073
+
1074
+ .date {
1075
+ grid-area: date;
1076
+ text-align: right;
1077
+ color: $--sub-color;
1078
+ align-self: center;
1079
+ }
1080
+
1081
+ .body {
1082
+ grid-area: body;
1083
+ color: $--text-color;
1084
+ }
1085
+
1086
+ &:last-child {
1087
+ margin-bottom: 2rem;
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+ }
1093
+
1094
+ #supportMeWrapper {
1095
+ #supportMe {
1096
+ width: 900px;
1097
+ overflow-y: scroll;
1098
+ max-height: 100%;
1099
+ background: $--bg-color;
1100
+ border-radius: $--roundness;
1101
+ padding: 2rem;
1102
+ display: grid;
1103
+ grid-template-rows: auto auto auto;
1104
+ gap: 1rem;
1105
+ @extend .ffscroll;
1106
+
1107
+ .title {
1108
+ font-size: 1.5rem;
1109
+ color: $--sub-color;
1110
+ }
1111
+
1112
+ .text {
1113
+ color: $--text-color;
1114
+ }
1115
+
1116
+ .subtext {
1117
+ color: $--sub-color;
1118
+ font-size: 0.75rem;
1119
+ }
1120
+
1121
+ .buttons {
1122
+ display: grid;
1123
+ grid-template-columns: 1fr 1fr 1fr;
1124
+ gap: 1rem;
1125
+
1126
+ .button {
1127
+ display: block;
1128
+ width: 100%;
1129
+ height: 100%;
1130
+ padding: 1rem 0;
1131
+ display: grid;
1132
+ gap: 1rem;
1133
+ text-decoration: none;
1134
+ .text {
1135
+ transition: 0.25s;
1136
+ }
1137
+ &:hover .text {
1138
+ color: $--bg-color;
1139
+ }
1140
+ .icon {
1141
+ font-size: 3rem;
1142
+ line-height: 3rem;
1143
+ }
1144
+ }
1145
+ }
1146
+ }
1147
+ }
1148
+
1149
+ #contactPopupWrapper {
1150
+ #contactPopup {
1151
+ overflow-y: scroll;
1152
+ max-height: 100%;
1153
+ background: $--bg-color;
1154
+ border-radius: $--roundness;
1155
+ padding: 2rem;
1156
+ display: grid;
1157
+ grid-template-rows: auto auto auto;
1158
+ gap: 1rem;
1159
+ @extend .ffscroll;
1160
+ margin: 0 2rem;
1161
+ max-width: 900px;
1162
+
1163
+ .title {
1164
+ font-size: 1.5rem;
1165
+ line-height: 2rem;
1166
+ color: $--sub-color;
1167
+ }
1168
+
1169
+ .text {
1170
+ color: $--text-color;
1171
+ span {
1172
+ color: $--error-color;
1173
+ }
1174
+ }
1175
+
1176
+ .subtext {
1177
+ color: $--sub-color;
1178
+ font-size: 0.75rem;
1179
+ grid-area: subtext;
1180
+ }
1181
+
1182
+ .buttons {
1183
+ display: grid;
1184
+ gap: 1rem;
1185
+ grid-template-columns: 1fr 1fr;
1186
+
1187
+ .button {
1188
+ display: block;
1189
+ width: 100%;
1190
+ height: 100%;
1191
+ padding: 1rem 0;
1192
+ display: grid;
1193
+ text-decoration: none;
1194
+ grid-template-areas: "icon textgroup";
1195
+ grid-template-columns: auto 1fr;
1196
+ text-align: left;
1197
+ align-items: center;
1198
+ .textGroup {
1199
+ grid-area: textgroup;
1200
+ }
1201
+ .text {
1202
+ font-size: 1.5rem;
1203
+ line-height: 2rem;
1204
+ transition: 0.25s;
1205
+ }
1206
+ &:hover .text {
1207
+ color: $--bg-color;
1208
+ }
1209
+ .icon {
1210
+ grid-area: icon;
1211
+ font-size: 2rem;
1212
+ line-height: 2rem;
1213
+ padding: 0 1rem;
1214
+ }
1215
+ }
1216
+ }
1217
+ }
1218
+ }
1219
+
1220
+ #presetWrapper {
1221
+ #presetEdit {
1222
+ .title {
1223
+ font-size: 1.5rem;
1224
+ color: $--sub-color;
1225
+ }
1226
+ background: $--bg-color;
1227
+ border-radius: $--roundness;
1228
+ padding: 2rem;
1229
+ display: grid;
1230
+ gap: 1rem;
1231
+ overflow-y: scroll;
1232
+ }
1233
+ }
1234
+
1235
+ #tagsWrapper,
1236
+ #newResultFilterPresetPopupWrapper,
1237
+ #editProfilePopupWrapper {
1238
+ #tagsEdit,
1239
+ #newResultFilterPresetPopup,
1240
+ #editProfilePopup {
1241
+ max-height: 90vh;
1242
+ background: $--bg-color;
1243
+ border-radius: $--roundness;
1244
+ padding: 2rem;
1245
+ display: grid;
1246
+ gap: 1rem;
1247
+ overflow-y: scroll;
1248
+ .title {
1249
+ font-size: 1.5rem;
1250
+ color: $--sub-color;
1251
+ }
1252
+ }
1253
+ }
1254
+
1255
+ #editProfilePopup {
1256
+ width: 100%;
1257
+ max-width: 600px;
1258
+ label {
1259
+ color: $--sub-color;
1260
+ }
1261
+ input {
1262
+ width: 100%;
1263
+ }
1264
+ textarea {
1265
+ resize: vertical;
1266
+ width: 100%;
1267
+ padding: 10px;
1268
+ line-height: 1.2rem;
1269
+ min-height: 5rem;
1270
+ max-height: 10rem;
1271
+ }
1272
+
1273
+ .socialURL {
1274
+ display: flex;
1275
+ }
1276
+
1277
+ .socialURL > p {
1278
+ margin-block: 0.5rem;
1279
+ margin-inline-end: 0.5rem;
1280
+ }
1281
+
1282
+ .badgeSelectionContainer {
1283
+ display: flex;
1284
+ flex-wrap: wrap;
1285
+ }
1286
+
1287
+ .badgeSelectionItem {
1288
+ margin-bottom: 0.5rem;
1289
+ width: max-content;
1290
+ opacity: 25%;
1291
+ cursor: pointer;
1292
+ margin-right: 0.5rem;
1293
+ margin-bottom: 0.5rem;
1294
+ }
1295
+
1296
+ .badgeSelectionItem.selected,
1297
+ .badgeSelectionItem:hover {
1298
+ opacity: 100%;
1299
+ }
1300
+ }
1301
+
1302
+ #customThemesWrapper {
1303
+ #customThemesEdit {
1304
+ background: $--bg-color;
1305
+ border-radius: $--roundness;
1306
+ padding: 2rem;
1307
+ display: grid;
1308
+ gap: 1rem;
1309
+ overflow-y: scroll;
1310
+ }
1311
+ }