@matdata/yasgui 5.0.1 → 5.2.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 (38) hide show
  1. package/README.md +196 -111
  2. package/build/ts/src/PersistentConfig.d.ts +4 -1
  3. package/build/ts/src/PersistentConfig.js +8 -0
  4. package/build/ts/src/PersistentConfig.js.map +1 -1
  5. package/build/ts/src/Tab.d.ts +8 -0
  6. package/build/ts/src/Tab.js +85 -1
  7. package/build/ts/src/Tab.js.map +1 -1
  8. package/build/ts/src/TabElements.js +6 -0
  9. package/build/ts/src/TabElements.js.map +1 -1
  10. package/build/ts/src/TabSettingsModal.d.ts +4 -0
  11. package/build/ts/src/TabSettingsModal.js +128 -9
  12. package/build/ts/src/TabSettingsModal.js.map +1 -1
  13. package/build/ts/src/ThemeManager.d.ts +17 -0
  14. package/build/ts/src/ThemeManager.js +69 -0
  15. package/build/ts/src/ThemeManager.js.map +1 -0
  16. package/build/ts/src/defaults.js +4 -0
  17. package/build/ts/src/defaults.js.map +1 -1
  18. package/build/ts/src/index.d.ts +16 -0
  19. package/build/ts/src/index.js +17 -0
  20. package/build/ts/src/index.js.map +1 -1
  21. package/build/yasgui.min.css +1 -1
  22. package/build/yasgui.min.css.map +3 -3
  23. package/build/yasgui.min.js +114 -98
  24. package/build/yasgui.min.js.map +4 -4
  25. package/package.json +1 -1
  26. package/src/PersistentConfig.ts +10 -1
  27. package/src/Tab.ts +125 -0
  28. package/src/TabElements.scss +33 -6
  29. package/src/TabElements.ts +9 -0
  30. package/src/TabSettingsModal.scss +154 -20
  31. package/src/TabSettingsModal.ts +171 -13
  32. package/src/ThemeManager.ts +120 -0
  33. package/src/defaults.ts +4 -0
  34. package/src/endpointSelect.scss +34 -0
  35. package/src/index.scss +2 -2
  36. package/src/index.ts +43 -0
  37. package/src/tab.scss +60 -8
  38. package/src/themes.scss +543 -0
@@ -0,0 +1,543 @@
1
+ // Theme variables and styles for Yasgui
2
+ // Supports light (default) and dark themes
3
+
4
+ :root {
5
+ // Light theme colors (default)
6
+ --yasgui-bg-primary: #ffffff;
7
+ --yasgui-bg-secondary: #f7f7f7;
8
+ --yasgui-bg-tertiary: #eee;
9
+ --yasgui-text-primary: rgba(0, 0, 0, 0.87);
10
+ --yasgui-text-secondary: #505050;
11
+ --yasgui-text-muted: #999;
12
+ --yasgui-border-color: #ddd;
13
+ --yasgui-border-color-secondary: rgba(0, 0, 0, 0.26);
14
+ --yasgui-border-color-light: #d1d1d1;
15
+ --yasgui-link-color: #337ab7;
16
+ --yasgui-link-hover: #2a6496;
17
+ --yasgui-accent-color: #337ab7;
18
+ --yasgui-button-text: #505050;
19
+ --yasgui-button-hover: #000;
20
+ --yasgui-chip-bg: #f5f5f5;
21
+ --yasgui-chip-text: #505050;
22
+ --yasgui-tab-bg: #ffffff;
23
+ --yasgui-tab-bg-active: #f9f9f9;
24
+ --yasgui-tab-border: #ddd;
25
+ --yasgui-input-border: rgba(0, 0, 0, 0.26);
26
+ --yasgui-input-focus: #337ab7;
27
+ --yasgui-label-color: rgba(0, 0, 0, 0.54);
28
+ --yasgui-tooltip-bg: rgba(0, 0, 0, 0.8);
29
+ --yasgui-tooltip-text: #fff;
30
+ --yasgui-error-color: #d32f2f;
31
+ --yasgui-notification-bg: #eee;
32
+ --yasgui-notification-text: #999;
33
+ --yasgui-help-bg: #dff0ff;
34
+ --yasgui-help-text: #428bca;
35
+ --yasgui-fallback-bg: #f7f7f7;
36
+ --yasgui-fallback-border: #d1d1d1;
37
+ --yasgui-resize-handle: #d1d1d1;
38
+ --yasgui-nav-bg: #eee;
39
+ --yasgui-match-highlight-bg: #dbdeed;
40
+
41
+ // Layout dimensions (used for horizontal orientation)
42
+ --yasgui-header-height: 100px; // Height to subtract from viewport in horizontal layout
43
+ --yasgui-min-height: 400px; // Minimum height for horizontal layout panels
44
+
45
+ --yasgui-endpoint-button-bg: #337ab7;
46
+ --yasgui-endpoint-button-border: #337ab7;
47
+ --yasgui-endpoint-button-text: #ffffff;
48
+ --yasgui-endpoint-button-hover-bg: #286090;
49
+ --yasgui-endpoint-button-hover-border: #286090;
50
+ --yasgui-endpoint-button-focus: #5cb3fd;
51
+ }
52
+
53
+ [data-theme="dark"] {
54
+ // Dark theme colors
55
+ --yasgui-bg-primary: #1e1e1e;
56
+ --yasgui-bg-secondary: #252526;
57
+ --yasgui-bg-tertiary: #2d2d30;
58
+ --yasgui-text-primary: #d4d4d4;
59
+ --yasgui-text-secondary: #cccccc;
60
+ --yasgui-text-muted: #858585;
61
+ --yasgui-border-color: #3e3e42;
62
+ --yasgui-border-color-secondary: rgba(255, 255, 255, 0.15);
63
+ --yasgui-border-color-light: #3e3e42;
64
+ --yasgui-link-color: #4fc3f7;
65
+ --yasgui-link-hover: #81d4fa;
66
+ --yasgui-accent-color: #4fc3f7;
67
+ --yasgui-button-text: #cccccc;
68
+ --yasgui-button-hover: #ffffff;
69
+ --yasgui-chip-bg: #2d2d30;
70
+ --yasgui-chip-text: #cccccc;
71
+ --yasgui-tab-bg: #2d2d30;
72
+ --yasgui-tab-bg-active: #1e1e1e;
73
+ --yasgui-tab-border: #3e3e42;
74
+ --yasgui-input-border: rgba(255, 255, 255, 0.15);
75
+ --yasgui-input-focus: #4fc3f7;
76
+ --yasgui-label-color: rgba(255, 255, 255, 0.6);
77
+ --yasgui-tooltip-bg: rgba(55, 55, 55, 0.95);
78
+ --yasgui-tooltip-text: #d4d4d4;
79
+ --yasgui-error-color: #f48771;
80
+ --yasgui-notification-bg: #2d2d30;
81
+ --yasgui-notification-text: #858585;
82
+ --yasgui-help-bg: #1a4d5e;
83
+ --yasgui-help-text: #4fc3f7;
84
+ --yasgui-fallback-bg: #252526;
85
+ --yasgui-fallback-border: #3e3e42;
86
+ --yasgui-resize-handle: #3e3e42;
87
+ --yasgui-nav-bg: #2d2d30;
88
+ --yasgui-match-highlight-bg: #3a4a5a;
89
+ --yasgui-endpoint-button-bg: #4fc3f7;
90
+ --yasgui-endpoint-button-border: #4fc3f7;
91
+ --yasgui-endpoint-button-text: #1e1e1e;
92
+ --yasgui-endpoint-button-hover-bg: #81d4fa;
93
+ --yasgui-endpoint-button-hover-border: #81d4fa;
94
+ --yasgui-endpoint-button-focus: #81d4fa;
95
+ }
96
+
97
+ // Apply theme colors to Yasgui components
98
+ .yasgui {
99
+ background-color: var(--yasgui-bg-primary);
100
+ color: var(--yasgui-text-primary);
101
+
102
+ a {
103
+ color: var(--yasgui-link-color);
104
+
105
+ &:hover,
106
+ &:active {
107
+ color: var(--yasgui-link-hover);
108
+ }
109
+ }
110
+
111
+ // Tabs styling
112
+ .tabsList {
113
+ background: var(--yasgui-bg-primary);
114
+ border-bottom: 1px solid var(--yasgui-border-color);
115
+ }
116
+
117
+ .tab {
118
+ background: var(--yasgui-tab-bg);
119
+ color: var(--yasgui-text-primary);
120
+ border-color: var(--yasgui-tab-border);
121
+
122
+ a {
123
+ color: var(--yasgui-text-primary);
124
+ }
125
+
126
+ &.active {
127
+ background: var(--yasgui-tab-bg-active);
128
+ border-bottom-color: var(--yasgui-tab-bg-active);
129
+
130
+ a {
131
+ color: var(--yasgui-text-primary);
132
+ }
133
+ }
134
+
135
+ &:hover:not(.active) {
136
+ background: var(--yasgui-bg-secondary);
137
+
138
+ a {
139
+ color: var(--yasgui-text-primary);
140
+ }
141
+ }
142
+ }
143
+
144
+ // Text fields
145
+ .yasgui_textfield {
146
+ > label {
147
+ color: var(--yasgui-label-color);
148
+ }
149
+
150
+ > input,
151
+ > textarea {
152
+ color: var(--yasgui-text-primary);
153
+ border-bottom-color: var(--yasgui-input-border);
154
+ background-color: transparent;
155
+
156
+ &:focus {
157
+ border-color: var(--yasgui-input-focus);
158
+ }
159
+ }
160
+
161
+ > input:focus ~ label,
162
+ > textarea:focus ~ label {
163
+ color: var(--yasgui-input-focus);
164
+ }
165
+ }
166
+
167
+ // Theme toggle button
168
+ .themeToggle {
169
+ border: none;
170
+ background: transparent;
171
+ cursor: pointer;
172
+ padding: 6px 8px;
173
+ color: var(--yasgui-button-text);
174
+ fill: var(--yasgui-button-text);
175
+ display: flex;
176
+ align-items: center;
177
+ justify-content: center;
178
+ border-radius: 4px;
179
+ margin-left: 5px;
180
+
181
+ &:hover {
182
+ color: var(--yasgui-button-hover);
183
+ fill: var(--yasgui-button-hover);
184
+ background: var(--yasgui-bg-secondary);
185
+ }
186
+
187
+ svg {
188
+ width: 20px;
189
+ height: 20px;
190
+ }
191
+ }
192
+
193
+ // Endpoint textbox theming
194
+ .autocomplete {
195
+ background-color: var(--yasgui-bg-primary) !important;
196
+ color: var(--yasgui-text-primary) !important;
197
+ border-color: var(--yasgui-border-color) !important;
198
+
199
+ &:hover {
200
+ border-color: var(--yasgui-border-color-light) !important;
201
+ }
202
+
203
+ &:focus {
204
+ border-color: var(--yasgui-accent-color) !important;
205
+ }
206
+ }
207
+
208
+ .autocompleteList {
209
+ background: var(--yasgui-bg-primary) !important;
210
+ border-color: var(--yasgui-border-color) !important;
211
+
212
+ .autoComplete_result {
213
+ color: var(--yasgui-text-primary);
214
+
215
+ b {
216
+ color: var(--yasgui-accent-color) !important;
217
+ }
218
+
219
+ &.autoComplete_selected,
220
+ &:hover {
221
+ background: var(--yasgui-bg-secondary) !important;
222
+ }
223
+
224
+ .removeItem {
225
+ color: var(--yasgui-text-primary) !important;
226
+ text-shadow: none !important;
227
+
228
+ &:hover {
229
+ color: var(--yasgui-accent-color) !important;
230
+ }
231
+ }
232
+ }
233
+
234
+ .noResults {
235
+ color: var(--yasgui-text-muted);
236
+ }
237
+ }
238
+
239
+ .clearEndpointBtn {
240
+ background-color: var(--yasgui-bg-secondary) !important;
241
+ border-color: var(--yasgui-border-color) !important;
242
+ color: var(--yasgui-button-text) !important;
243
+
244
+ &:hover {
245
+ background-color: var(--yasgui-bg-tertiary) !important;
246
+ }
247
+ }
248
+ }
249
+
250
+ // Yasqe (editor) theming
251
+ .yasqe {
252
+ background-color: var(--yasgui-bg-primary);
253
+
254
+ .CodeMirror {
255
+ background-color: var(--yasgui-bg-primary);
256
+ color: var(--yasgui-text-primary);
257
+ }
258
+
259
+ .notification {
260
+ color: var(--yasgui-notification-text) !important;
261
+ background-color: var(--yasgui-notification-bg) !important;
262
+ }
263
+
264
+ .yasqe_tooltip {
265
+ background: var(--yasgui-tooltip-bg);
266
+ color: var(--yasgui-tooltip-text);
267
+ }
268
+
269
+ .resizeChip {
270
+ background-color: var(--yasgui-resize-handle);
271
+ }
272
+
273
+ .parseErrorIcon svg g {
274
+ fill: var(--yasgui-error-color);
275
+ }
276
+
277
+ .cm-matchhighlight {
278
+ background-color: var(--yasgui-match-highlight-bg);
279
+ }
280
+
281
+ // Yasqe buttons theming (share, query, fullscreen)
282
+ .yasqe_buttons {
283
+ svg {
284
+ fill: var(--yasgui-button-text) !important;
285
+ }
286
+
287
+ .yasqe_share {
288
+ &:hover svg {
289
+ fill: var(--yasgui-button-hover) !important;
290
+ }
291
+ }
292
+
293
+ .yasqe_fullscreenButton {
294
+ &:hover svg {
295
+ fill: var(--yasgui-accent-color) !important;
296
+ }
297
+ }
298
+
299
+ .yasqe_sharePopup {
300
+ background-color: var(--yasgui-bg-primary) !important;
301
+ border-color: var(--yasgui-border-color) !important;
302
+
303
+ input,
304
+ textarea {
305
+ background-color: var(--yasgui-bg-secondary);
306
+ color: var(--yasgui-text-primary);
307
+ border-color: var(--yasgui-border-color);
308
+ }
309
+ }
310
+ }
311
+
312
+ .yasqe_btn {
313
+ background-color: var(--yasgui-bg-primary) !important;
314
+ color: var(--yasgui-text-primary) !important;
315
+ border-color: var(--yasgui-border-color) !important;
316
+
317
+ &:hover {
318
+ background-color: var(--yasgui-bg-secondary) !important;
319
+ border-color: var(--yasgui-border-color-light) !important;
320
+ }
321
+
322
+ &:focus,
323
+ &.selected {
324
+ background-color: var(--yasgui-accent-color) !important;
325
+ border-color: var(--yasgui-accent-color) !important;
326
+ color: var(--yasgui-bg-primary) !important;
327
+ }
328
+
329
+ &.btn_icon:focus {
330
+ background-color: var(--yasgui-bg-primary) !important;
331
+ color: var(--yasgui-text-primary) !important;
332
+ border-color: var(--yasgui-border-color) !important;
333
+ }
334
+ }
335
+
336
+ &.fullscreen {
337
+ background: var(--yasgui-bg-primary) !important;
338
+ }
339
+ }
340
+
341
+ // CodeMirror hints theming
342
+ .CodeMirror-hints {
343
+ background: var(--yasgui-bg-primary) !important;
344
+ border-color: var(--yasgui-border-color) !important;
345
+ }
346
+
347
+ .CodeMirror-hint {
348
+ color: var(--yasgui-text-primary) !important;
349
+ }
350
+
351
+ li.CodeMirror-hint-active {
352
+ background: var(--yasgui-accent-color) !important;
353
+ color: var(--yasgui-bg-primary) !important;
354
+ }
355
+
356
+ // Yasr (results) theming
357
+ .yasr {
358
+ background-color: var(--yasgui-bg-primary);
359
+ color: var(--yasgui-text-primary);
360
+
361
+ a {
362
+ color: var(--yasgui-link-color);
363
+
364
+ &:hover,
365
+ &:active {
366
+ color: var(--yasgui-link-hover);
367
+ }
368
+ }
369
+
370
+ .yasr_btn {
371
+ color: var(--yasgui-button-text);
372
+ fill: var(--yasgui-button-text);
373
+
374
+ &.selected {
375
+ border-bottom-color: var(--yasgui-accent-color);
376
+ }
377
+
378
+ &:not(.disabled):hover {
379
+ fill: var(--yasgui-button-hover);
380
+ color: var(--yasgui-button-hover);
381
+ }
382
+ }
383
+
384
+ .yasr_response_chip {
385
+ color: var(--yasgui-chip-text);
386
+ background: var(--yasgui-chip-bg);
387
+ }
388
+
389
+ .yasr_fallback_info:not(:empty) {
390
+ border-color: var(--yasgui-fallback-border);
391
+ background: var(--yasgui-fallback-bg);
392
+ }
393
+
394
+ .yasr_help_variable {
395
+ background: var(--yasgui-help-bg);
396
+ color: var(--yasgui-help-text);
397
+ }
398
+
399
+ &.fullscreen {
400
+ background: var(--yasgui-bg-primary);
401
+ }
402
+
403
+ .yasr_loading_spinner {
404
+ border-color: var(--yasgui-bg-secondary);
405
+ border-top-color: var(--yasgui-accent-color);
406
+ }
407
+
408
+ // Table plugin theming
409
+ .dataTable {
410
+ background-color: var(--yasgui-bg-primary);
411
+ color: var(--yasgui-text-primary);
412
+
413
+ thead th {
414
+ background-color: var(--yasgui-bg-secondary);
415
+ color: var(--yasgui-text-primary);
416
+ border-bottom-color: var(--yasgui-border-color);
417
+ }
418
+
419
+ tbody td {
420
+ border-color: var(--yasgui-border-color-light);
421
+ color: var(--yasgui-text-primary);
422
+ }
423
+
424
+ tbody tr:hover {
425
+ background-color: var(--yasgui-bg-secondary);
426
+ }
427
+ }
428
+
429
+ .tableControls {
430
+ input,
431
+ select {
432
+ background-color: var(--yasgui-bg-secondary);
433
+ color: var(--yasgui-text-primary);
434
+ border-color: var(--yasgui-input-border);
435
+
436
+ &:focus {
437
+ border-color: var(--yasgui-input-focus);
438
+ }
439
+ }
440
+ }
441
+
442
+ // Error plugin theming
443
+ .errorResult {
444
+ .errorMessageContainer {
445
+ .errorMessage {
446
+ color: var(--yasgui-text-primary) !important;
447
+ background-color: var(--yasgui-bg-secondary) !important;
448
+ border-color: var(--yasgui-border-color) !important;
449
+ }
450
+ }
451
+
452
+ .redOutline {
453
+ color: var(--yasgui-error-color) !important;
454
+ background-color: var(--yasgui-bg-secondary) !important;
455
+ border-color: var(--yasgui-error-color) !important;
456
+ }
457
+ }
458
+
459
+ // Response plugin theming
460
+ .yasr_results {
461
+ .CodeMirror {
462
+ background-color: var(--yasgui-bg-primary) !important;
463
+ color: var(--yasgui-text-primary) !important;
464
+ border-color: var(--yasgui-border-color) !important;
465
+
466
+ &.overflow::before {
467
+ background: linear-gradient(
468
+ transparent 0%,
469
+ var(--yasgui-bg-primary) 75%,
470
+ var(--yasgui-bg-primary) 100%
471
+ ) !important;
472
+ }
473
+ }
474
+
475
+ .overlay_content {
476
+ background: var(--yasgui-bg-primary) !important;
477
+ background: linear-gradient(
478
+ to right,
479
+ transparent,
480
+ var(--yasgui-bg-primary) 5%,
481
+ var(--yasgui-bg-primary) 95%,
482
+ transparent 100%
483
+ ) !important;
484
+ }
485
+
486
+ .yasr_btn.overlay_btn {
487
+ background: var(--yasgui-bg-primary) !important;
488
+ color: var(--yasgui-accent-color) !important;
489
+ border-color: var(--yasgui-accent-color) !important;
490
+
491
+ svg {
492
+ fill: var(--yasgui-accent-color) !important;
493
+ color: var(--yasgui-accent-color) !important;
494
+ }
495
+
496
+ &:hover {
497
+ color: var(--yasgui-link-hover) !important;
498
+ border-color: var(--yasgui-accent-color) !important;
499
+ fill: var(--yasgui-link-hover) !important;
500
+
501
+ svg {
502
+ color: var(--yasgui-link-hover) !important;
503
+ fill: var(--yasgui-link-hover) !important;
504
+ }
505
+ }
506
+ }
507
+ }
508
+
509
+ .cm-s-default {
510
+ background-color: var(--yasgui-bg-primary);
511
+ color: var(--yasgui-text-primary);
512
+ }
513
+ }
514
+
515
+ // Modal theming
516
+ .modal {
517
+ .modal-content {
518
+ background-color: var(--yasgui-bg-primary);
519
+ color: var(--yasgui-text-primary);
520
+ border-color: var(--yasgui-border-color);
521
+ }
522
+
523
+ .modal-header {
524
+ border-bottom-color: var(--yasgui-border-color);
525
+ }
526
+
527
+ .modal-footer {
528
+ border-top-color: var(--yasgui-border-color);
529
+ }
530
+
531
+ input,
532
+ textarea,
533
+ select {
534
+ background-color: var(--yasgui-bg-secondary);
535
+ color: var(--yasgui-text-primary);
536
+ border-color: var(--yasgui-input-border);
537
+
538
+ &:focus {
539
+ border-color: var(--yasgui-input-focus);
540
+ background-color: var(--yasgui-bg-primary);
541
+ }
542
+ }
543
+ }