synthos 0.7.0 → 0.7.1

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.
@@ -0,0 +1,682 @@
1
+ :root {
2
+ --bg-primary: #f0e6f6;
3
+ --bg-secondary: #e8dff0;
4
+ --bg-tertiary: #f7f2fa;
5
+ --accent-primary: #667eea;
6
+ --accent-secondary: #764ba2;
7
+ --accent-tertiary: #c054d4;
8
+ --accent-glow: rgba(118,75,162,0.15);
9
+ --text-primary: #2d2640;
10
+ --text-secondary: #6b4f8a;
11
+ --border-color: rgba(118,75,162,0.25);
12
+ --header-min-height: 58px;
13
+ --header-padding-vertical: 14px;
14
+ --header-padding-horizontal: 20px;
15
+ --header-line-height: 1.25;
16
+ }
17
+
18
+ * {
19
+ margin: 0;
20
+ padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
26
+ background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 50%, var(--bg-tertiary) 100%);
27
+ color: var(--text-primary);
28
+ height: 100vh;
29
+ display: flex;
30
+ }
31
+
32
+ .chat-panel {
33
+ width: 30%;
34
+ background: linear-gradient(180deg, rgba(255,255,255,0.92) 0%, rgba(240,230,246,0.95) 100%);
35
+ box-shadow: 0 0 30px rgba(118,75,162,0.1), inset 0 0 60px rgba(240,230,246,0.3);
36
+ padding: 20px;
37
+ display: flex;
38
+ flex-direction: column;
39
+ border-right: 1px solid var(--border-color);
40
+ position: relative;
41
+ transition: margin-left 0.3s ease, border-right-color 0.3s ease;
42
+ }
43
+
44
+ .chat-header {
45
+ font-size: 24px;
46
+ min-height: var(--header-min-height);
47
+ padding: var(--header-padding-vertical) var(--header-padding-horizontal);
48
+ line-height: var(--header-line-height);
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ box-sizing: border-box;
53
+ background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
54
+ color: #fff;
55
+ border-radius: 15px;
56
+ box-shadow: 0 4px 20px rgba(102,126,234,0.3);
57
+ text-shadow: 0 2px 10px rgba(0,0,0,0.15);
58
+ letter-spacing: 2px;
59
+ }
60
+
61
+ .chat-messages {
62
+ flex-grow: 1;
63
+ overflow-y: auto;
64
+ padding: 15px;
65
+ margin-top: 15px;
66
+ background: rgba(255,255,255,0.6);
67
+ border-radius: 15px;
68
+ border: 1px solid rgba(118,75,162,0.15);
69
+ box-shadow: inset 0 0 30px rgba(240,230,246,0.4);
70
+ }
71
+
72
+ .chat-message {
73
+ margin-bottom: 15px;
74
+ padding: 12px 15px;
75
+ background: linear-gradient(135deg, rgba(102,126,234,0.08) 0%, rgba(118,75,162,0.08) 100%);
76
+ border-radius: 15px;
77
+ box-shadow: 0 2px 10px rgba(118,75,162,0.1);
78
+ border: 1px solid rgba(118,75,162,0.1);
79
+ backdrop-filter: blur(5px);
80
+ }
81
+
82
+ .chat-message p {
83
+ margin-bottom: 5px;
84
+ line-height: 1.5;
85
+ }
86
+
87
+ .chat-message p strong {
88
+ font-weight: 600;
89
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-tertiary));
90
+ -webkit-background-clip: text;
91
+ background-clip: text;
92
+ -webkit-text-fill-color: transparent;
93
+ }
94
+
95
+ .chat-message p code {
96
+ background: var(--accent-glow);
97
+ padding: 2px 6px;
98
+ border-radius: 5px;
99
+ font-family: 'Courier New', Courier, monospace;
100
+ color: var(--accent-secondary);
101
+ border: 1px solid rgba(118,75,162,0.2);
102
+ }
103
+
104
+ .link-group {
105
+ display: flex;
106
+ justify-content: space-between;
107
+ margin: 15px 0;
108
+ padding: 10px;
109
+ background: rgba(255,255,255,0.4);
110
+ border-radius: 10px;
111
+ border: 1px solid rgba(118,75,162,0.15);
112
+ }
113
+
114
+ .link-group a {
115
+ font-size: 14px;
116
+ color: var(--text-secondary);
117
+ text-decoration: none;
118
+ padding: 8px 15px;
119
+ border-radius: 8px;
120
+ transition: all 0.3s ease;
121
+ border: 1px solid transparent;
122
+ }
123
+
124
+ .link-group a:hover {
125
+ background: linear-gradient(135deg, rgba(102,126,234,0.15) 0%, rgba(118,75,162,0.15) 100%);
126
+ border-color: rgba(118,75,162,0.3);
127
+ box-shadow: 0 0 15px var(--accent-glow);
128
+ color: var(--accent-secondary);
129
+ }
130
+
131
+ form {
132
+ display: flex;
133
+ flex-direction: row;
134
+ width: 100%;
135
+ gap: 10px;
136
+ align-items: center;
137
+ }
138
+
139
+ .chat-input {
140
+ padding: 14px 18px;
141
+ border: 1px solid var(--border-color);
142
+ border-radius: 25px;
143
+ flex-grow: 1;
144
+ font-size: 14px;
145
+ background: rgba(255,255,255,0.8);
146
+ color: var(--text-primary);
147
+ box-shadow: inset 0 2px 10px rgba(118,75,162,0.05), 0 0 20px rgba(118,75,162,0.05);
148
+ transition: all 0.3s ease;
149
+ }
150
+
151
+ .chat-input:focus {
152
+ outline: none;
153
+ border-color: rgba(118,75,162,0.5);
154
+ box-shadow: inset 0 2px 10px rgba(118,75,162,0.05), 0 0 25px rgba(118,75,162,0.15);
155
+ }
156
+
157
+ .chat-input::placeholder {
158
+ color: rgba(118,75,162,0.4);
159
+ }
160
+
161
+ .chat-submit {
162
+ padding: 14px 20px;
163
+ border: none;
164
+ border-radius: 25px;
165
+ font-size: 14px;
166
+ background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
167
+ color: #fff;
168
+ cursor: pointer;
169
+ transition: all 0.3s ease;
170
+ font-weight: 600;
171
+ letter-spacing: 1px;
172
+ box-shadow: 0 4px 20px rgba(102,126,234,0.3);
173
+ white-space: nowrap;
174
+ }
175
+
176
+ .chat-submit:hover {
177
+ transform: translateY(-2px);
178
+ box-shadow: 0 6px 25px rgba(102,126,234,0.5);
179
+ }
180
+
181
+ .chat-submit:active {
182
+ transform: translateY(0);
183
+ }
184
+
185
+ .viewer-panel {
186
+ flex: 1;
187
+ min-width: 0;
188
+ padding: 20px 20px 20px 44px;
189
+ background: linear-gradient(135deg, rgba(232,223,240,0.9) 0%, rgba(247,242,250,0.95) 100%);
190
+ display: flex;
191
+ flex-direction: column;
192
+ justify-content: center;
193
+ align-items: center;
194
+ box-shadow: inset 0 0 60px rgba(118,75,162,0.05);
195
+ position: relative;
196
+ overflow: hidden;
197
+ }
198
+
199
+ .viewer-panel::before {
200
+ content: '';
201
+ position: absolute;
202
+ top: -50%;
203
+ left: -50%;
204
+ width: 200%;
205
+ height: 200%;
206
+ background: radial-gradient(ellipse at center, rgba(102,126,234,0.04) 0%, transparent 70%);
207
+ animation: nebula-pulse 8s ease-in-out infinite;
208
+ pointer-events: none;
209
+ }
210
+
211
+ @keyframes nebula-pulse {
212
+ 0%,100% { opacity: 0.5; transform: scale(1); }
213
+ 50% { opacity: 1; transform: scale(1.1); }
214
+ }
215
+
216
+ .viewer-panel.full-viewer {
217
+ padding: 0;
218
+ }
219
+
220
+ .loading-overlay {
221
+ display: none;
222
+ position: fixed;
223
+ top: 0;
224
+ left: 0;
225
+ width: 100%;
226
+ height: 100%;
227
+ background: rgba(240,230,246,0.9);
228
+ justify-content: center;
229
+ align-items: center;
230
+ z-index: 1000;
231
+ }
232
+
233
+ .spinner {
234
+ width: 50px;
235
+ height: 50px;
236
+ border: 4px solid var(--border-color);
237
+ border-top-color: var(--accent-tertiary);
238
+ border-radius: 50%;
239
+ animation: spin 1s linear infinite;
240
+ }
241
+
242
+ @keyframes spin {
243
+ to { transform: rotate(360deg); }
244
+ }
245
+
246
+ ::-webkit-scrollbar {
247
+ width: 10px;
248
+ height: 10px;
249
+ }
250
+
251
+ ::-webkit-scrollbar-track {
252
+ background: rgba(240,230,246,0.6);
253
+ border-radius: 10px;
254
+ }
255
+
256
+ ::-webkit-scrollbar-thumb {
257
+ background: linear-gradient(180deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
258
+ border-radius: 10px;
259
+ border: 2px solid rgba(240,230,246,0.6);
260
+ box-shadow: 0 0 10px var(--accent-glow);
261
+ }
262
+
263
+ ::-webkit-scrollbar-thumb:hover {
264
+ background: linear-gradient(180deg, var(--accent-tertiary) 0%, var(--accent-secondary) 50%, var(--accent-primary) 100%);
265
+ box-shadow: 0 0 15px rgba(192,84,212,0.3);
266
+ }
267
+
268
+ ::-webkit-scrollbar-corner {
269
+ background: rgba(240,230,246,0.6);
270
+ }
271
+
272
+ * {
273
+ scrollbar-width: thin;
274
+ scrollbar-color: var(--accent-secondary) rgba(240,230,246,0.6);
275
+ }
276
+
277
+ /* ---- Chat Toggle ---- */
278
+ .chat-toggle {
279
+ position: fixed;
280
+ left: 30%;
281
+ top: 50%;
282
+ transform: translateY(-50%);
283
+ width: 24px;
284
+ height: 80px;
285
+ background: rgba(240,230,246,0.95);
286
+ border: none;
287
+ border-left: 1px solid var(--border-color);
288
+ border-radius: 0 12px 12px 0;
289
+ cursor: pointer;
290
+ z-index: 1000;
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ padding: 0;
295
+ transition: left 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
296
+ }
297
+
298
+ .chat-toggle:hover {
299
+ background: rgba(255,255,255,1);
300
+ box-shadow: 0 0 20px var(--accent-glow), inset 0 0 15px rgba(118,75,162,0.1);
301
+ }
302
+
303
+ .chat-toggle-dots {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: 6px;
307
+ }
308
+
309
+ .chat-toggle-dot {
310
+ width: 4px;
311
+ height: 4px;
312
+ border-radius: 50%;
313
+ background: var(--text-secondary);
314
+ transition: transform 0.3s ease;
315
+ }
316
+
317
+ .chat-toggle:hover .chat-toggle-dot {
318
+ transform: scale(1.4);
319
+ }
320
+
321
+ body.chat-collapsed .chat-panel {
322
+ margin-left: -30%;
323
+ border-right-color: transparent;
324
+ }
325
+
326
+ body.chat-collapsed .chat-toggle {
327
+ left: 0;
328
+ }
329
+
330
+ /* ---- Modal ---- */
331
+ .modal-overlay {
332
+ position: fixed;
333
+ top: 0; left: 0; right: 0; bottom: 0;
334
+ background: rgba(0, 0, 0, 0.4);
335
+ display: none;
336
+ align-items: center;
337
+ justify-content: center;
338
+ z-index: 2000;
339
+ backdrop-filter: blur(4px);
340
+ }
341
+
342
+ .modal-overlay.show { display: flex; }
343
+
344
+ .modal-content {
345
+ background: var(--bg-primary);
346
+ border: 1px solid var(--border-color);
347
+ border-radius: 12px;
348
+ width: 90%;
349
+ max-width: 450px;
350
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
351
+ overflow: hidden;
352
+ }
353
+
354
+ .modal-header {
355
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
356
+ color: white;
357
+ padding: 16px 20px;
358
+ font-size: 18px;
359
+ font-weight: 600;
360
+ }
361
+
362
+ .modal-body { padding: 20px; }
363
+
364
+ .modal-footer {
365
+ padding: 16px 20px;
366
+ border-top: 1px solid var(--border-color);
367
+ display: flex;
368
+ justify-content: space-between;
369
+ align-items: center;
370
+ gap: 12px;
371
+ }
372
+
373
+ .modal-footer-right { display: flex; gap: 10px; margin-left: auto; }
374
+
375
+ /* ---- Form elements ---- */
376
+ .form-group { margin-bottom: 16px; }
377
+ .form-group:last-child { margin-bottom: 0; }
378
+
379
+ .form-label {
380
+ display: block;
381
+ font-size: 13px;
382
+ color: var(--text-secondary);
383
+ margin-bottom: 6px;
384
+ font-weight: 500;
385
+ }
386
+
387
+ .form-input {
388
+ width: 100%;
389
+ padding: 10px 14px;
390
+ border: 1px solid var(--border-color);
391
+ border-radius: 8px;
392
+ background: var(--bg-secondary);
393
+ color: var(--text-primary);
394
+ font-size: 14px;
395
+ outline: none;
396
+ transition: border-color 0.2s ease;
397
+ box-sizing: border-box;
398
+ }
399
+
400
+ .form-input:focus { border-color: var(--accent-primary); }
401
+ .form-input:read-only { opacity: 0.7; cursor: not-allowed; }
402
+ .form-input::placeholder { color: var(--text-secondary); opacity: 0.7; }
403
+
404
+ .checkbox-label {
405
+ display: flex;
406
+ align-items: center;
407
+ gap: 8px;
408
+ cursor: pointer;
409
+ }
410
+
411
+ .checkbox-label input[type="checkbox"] {
412
+ width: 18px;
413
+ height: 18px;
414
+ accent-color: var(--accent-primary);
415
+ cursor: pointer;
416
+ }
417
+
418
+ .checkbox-label span { font-size: 14px; color: var(--text-primary); }
419
+
420
+ /* ---- Modal buttons ---- */
421
+ .modal-btn {
422
+ padding: 10px 20px;
423
+ border-radius: 8px;
424
+ font-size: 14px;
425
+ font-weight: 500;
426
+ cursor: pointer;
427
+ transition: all 0.2s ease;
428
+ border: none;
429
+ }
430
+
431
+ .modal-btn-primary {
432
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
433
+ color: white;
434
+ }
435
+
436
+ .modal-btn-primary:hover {
437
+ filter: brightness(1.1);
438
+ box-shadow: 0 4px 15px var(--accent-glow);
439
+ }
440
+
441
+ .modal-btn-secondary {
442
+ background: var(--bg-secondary);
443
+ color: var(--text-primary);
444
+ border: 1px solid var(--border-color);
445
+ }
446
+
447
+ .modal-btn-secondary:hover {
448
+ background: var(--bg-tertiary);
449
+ border-color: var(--text-secondary);
450
+ }
451
+
452
+ .modal-btn-danger { background: #dc3545; color: white; }
453
+
454
+ .modal-btn-danger:hover {
455
+ background: #c82333;
456
+ box-shadow: 0 4px 15px rgba(220, 53, 69, 0.3);
457
+ }
458
+
459
+ /* ---- Brainstorm icon button (inside input) ---- */
460
+ .chat-input-wrapper {
461
+ position: relative;
462
+ flex: 1;
463
+ display: flex;
464
+ align-items: center;
465
+ }
466
+
467
+ .chat-input-wrapper .chat-input {
468
+ width: 100%;
469
+ padding-right: 36px;
470
+ }
471
+
472
+ .brainstorm-icon-btn {
473
+ position: absolute;
474
+ right: 6px;
475
+ top: 50%;
476
+ transform: translateY(-50%);
477
+ background: transparent;
478
+ border: none;
479
+ color: var(--text-secondary);
480
+ cursor: pointer;
481
+ padding: 4px;
482
+ border-radius: 4px;
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: center;
486
+ transition: color 0.2s, background 0.2s;
487
+ }
488
+
489
+ .brainstorm-icon-btn:hover {
490
+ color: var(--accent-primary);
491
+ background: var(--accent-glow);
492
+ }
493
+
494
+ .light-mode .brainstorm-icon-btn {
495
+ color: var(--text-secondary);
496
+ }
497
+
498
+ .light-mode .brainstorm-icon-btn:hover {
499
+ color: var(--accent-primary);
500
+ }
501
+
502
+ /* ---- Brainstorm modal (full-window variant) ---- */
503
+ .brainstorm-modal .modal-content {
504
+ max-width: none;
505
+ width: calc(100% - 80px);
506
+ height: calc(100% - 80px);
507
+ display: flex;
508
+ flex-direction: column;
509
+ }
510
+
511
+ .brainstorm-modal .modal-header {
512
+ display: flex;
513
+ justify-content: space-between;
514
+ align-items: center;
515
+ flex-shrink: 0;
516
+ }
517
+
518
+ .brainstorm-close-btn {
519
+ background: none;
520
+ border: none;
521
+ color: white;
522
+ font-size: 24px;
523
+ cursor: pointer;
524
+ padding: 0 4px;
525
+ line-height: 1;
526
+ opacity: 0.7;
527
+ transition: opacity 0.2s;
528
+ }
529
+
530
+ .brainstorm-close-btn:hover { opacity: 1; }
531
+
532
+ .brainstorm-messages {
533
+ flex: 1;
534
+ overflow-y: auto;
535
+ scrollbar-gutter: stable;
536
+ padding: 20px;
537
+ display: flex;
538
+ flex-direction: column;
539
+ gap: 16px;
540
+ }
541
+
542
+ .brainstorm-message {
543
+ padding: 12px 16px;
544
+ border-radius: 10px;
545
+ font-size: 14px;
546
+ line-height: 1.5;
547
+ max-width: 85%;
548
+ word-wrap: break-word;
549
+ }
550
+
551
+ .brainstorm-user {
552
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
553
+ color: white;
554
+ align-self: flex-end;
555
+ }
556
+
557
+ .brainstorm-assistant {
558
+ background: var(--bg-secondary);
559
+ color: var(--text-primary);
560
+ border: 1px solid var(--border-color);
561
+ align-self: flex-start;
562
+ }
563
+
564
+ .brainstorm-input-row {
565
+ display: flex;
566
+ gap: 8px;
567
+ padding: 16px 20px;
568
+ border-top: 1px solid var(--border-color);
569
+ flex-shrink: 0;
570
+ }
571
+
572
+ .brainstorm-input {
573
+ flex: 1;
574
+ padding: 10px 14px;
575
+ border: 1px solid var(--border-color);
576
+ border-radius: 8px;
577
+ background: var(--bg-secondary);
578
+ color: var(--text-primary);
579
+ font-size: 14px;
580
+ outline: none;
581
+ transition: border-color 0.2s;
582
+ }
583
+
584
+ .brainstorm-input:focus { border-color: var(--accent-primary); }
585
+ .brainstorm-input::placeholder { color: var(--text-secondary); opacity: 0.7; }
586
+
587
+ .brainstorm-send-btn {
588
+ padding: 10px 20px;
589
+ border: none;
590
+ border-radius: 8px;
591
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
592
+ color: white;
593
+ font-size: 14px;
594
+ font-weight: 500;
595
+ cursor: pointer;
596
+ transition: all 0.2s;
597
+ }
598
+
599
+ .brainstorm-send-btn:hover {
600
+ filter: brightness(1.1);
601
+ box-shadow: 0 4px 15px var(--accent-glow);
602
+ }
603
+
604
+ .brainstorm-send-btn:disabled {
605
+ opacity: 0.5;
606
+ cursor: not-allowed;
607
+ }
608
+
609
+ .brainstorm-assistant p { margin: 4px 0; }
610
+ .brainstorm-assistant pre { background: var(--bg-tertiary); padding: 10px; border-radius: 6px; overflow-x: auto; margin: 8px 0; }
611
+ .brainstorm-assistant code { font-size: 13px; }
612
+ .brainstorm-assistant ul, .brainstorm-assistant ol { margin: 4px 0; padding-left: 20px; }
613
+
614
+ .brainstorm-build-row {
615
+ display: flex;
616
+ justify-content: flex-end;
617
+ margin-top: 10px;
618
+ }
619
+
620
+ .brainstorm-build-btn {
621
+ padding: 6px 16px;
622
+ font-size: 12px;
623
+ font-weight: 600;
624
+ border: none;
625
+ border-radius: 6px;
626
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
627
+ color: white;
628
+ cursor: pointer;
629
+ transition: all 0.2s;
630
+ }
631
+
632
+ .brainstorm-build-btn:hover {
633
+ filter: brightness(1.15);
634
+ box-shadow: 0 2px 10px var(--accent-glow);
635
+ }
636
+
637
+ .brainstorm-suggestions {
638
+ display: flex;
639
+ flex-wrap: wrap;
640
+ gap: 6px;
641
+ margin-top: 10px;
642
+ }
643
+
644
+ .brainstorm-suggestion-chip {
645
+ padding: 5px 12px;
646
+ font-size: 12px;
647
+ border: 1px solid var(--border-color);
648
+ border-radius: 16px;
649
+ background: var(--bg-tertiary);
650
+ color: var(--text-secondary);
651
+ cursor: pointer;
652
+ transition: all 0.2s;
653
+ line-height: 1.4;
654
+ }
655
+
656
+ .brainstorm-suggestion-chip:hover {
657
+ border-color: var(--accent-primary);
658
+ color: var(--accent-primary);
659
+ background: var(--accent-glow);
660
+ }
661
+
662
+ .brainstorm-suggestion-chip:disabled {
663
+ opacity: 0.4;
664
+ cursor: default;
665
+ pointer-events: none;
666
+ }
667
+
668
+ .brainstorm-thinking {
669
+ align-self: flex-start;
670
+ padding: 12px 16px;
671
+ background: var(--bg-secondary);
672
+ border: 1px solid var(--border-color);
673
+ border-radius: 10px;
674
+ color: var(--text-secondary);
675
+ font-size: 14px;
676
+ font-style: italic;
677
+ }
678
+
679
+ /* ---- Shared page rules ---- */
680
+ #loadingOverlay { position: absolute; }
681
+ .chat-submit:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
682
+ .chat-input:disabled { opacity: 0.5; cursor: not-allowed; }
@@ -0,0 +1,19 @@
1
+ {
2
+ "mode": "light",
3
+ "colors": {
4
+ "bg-primary": "#f0e6f6",
5
+ "bg-secondary": "#e8dff0",
6
+ "bg-tertiary": "#f7f2fa",
7
+ "accent-primary": "#667eea",
8
+ "accent-secondary": "#764ba2",
9
+ "accent-tertiary": "#c054d4",
10
+ "accent-glow": "rgba(118,75,162,0.15)",
11
+ "text-primary": "#2d2640",
12
+ "text-secondary": "#6b4f8a",
13
+ "border-color": "rgba(118,75,162,0.25)",
14
+ "header-min-height": "58px",
15
+ "header-padding-vertical": "14px",
16
+ "header-padding-horizontal": "20px",
17
+ "header-line-height": "1.25"
18
+ }
19
+ }
@@ -0,0 +1,674 @@
1
+ :root {
2
+ --bg-primary: #1a1a2e;
3
+ --bg-secondary: #16213e;
4
+ --bg-tertiary: #0f0f23;
5
+ --accent-primary: #667eea;
6
+ --accent-secondary: #764ba2;
7
+ --accent-tertiary: #f093fb;
8
+ --accent-glow: rgba(138,43,226,0.3);
9
+ --text-primary: #e0e0e0;
10
+ --text-secondary: #b794f6;
11
+ --border-color: rgba(138,43,226,0.3);
12
+ --header-min-height: 58px;
13
+ --header-padding-vertical: 14px;
14
+ --header-padding-horizontal: 20px;
15
+ --header-line-height: 1.25;
16
+ }
17
+
18
+ * {
19
+ margin: 0;
20
+ padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
26
+ background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 50%, var(--bg-tertiary) 100%);
27
+ color: var(--text-primary);
28
+ height: 100vh;
29
+ display: flex;
30
+ }
31
+
32
+ .chat-panel {
33
+ width: 30%;
34
+ background: linear-gradient(180deg, rgba(26,26,46,0.95) 0%, rgba(22,33,62,0.95) 100%);
35
+ box-shadow: 0 0 30px rgba(138,43,226,0.2), inset 0 0 60px rgba(75,0,130,0.1);
36
+ padding: 20px;
37
+ display: flex;
38
+ flex-direction: column;
39
+ border-right: 1px solid var(--border-color);
40
+ position: relative;
41
+ transition: margin-left 0.3s ease, border-right-color 0.3s ease;
42
+ }
43
+
44
+ .chat-header {
45
+ font-size: 24px;
46
+ min-height: var(--header-min-height);
47
+ padding: var(--header-padding-vertical) var(--header-padding-horizontal);
48
+ line-height: var(--header-line-height);
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ box-sizing: border-box;
53
+ background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
54
+ color: #fff;
55
+ border-radius: 15px;
56
+ box-shadow: 0 4px 20px rgba(102,126,234,0.4);
57
+ text-shadow: 0 2px 10px rgba(0,0,0,0.3);
58
+ letter-spacing: 2px;
59
+ }
60
+
61
+ .chat-messages {
62
+ flex-grow: 1;
63
+ overflow-y: auto;
64
+ padding: 15px;
65
+ margin-top: 15px;
66
+ background: rgba(15,15,35,0.6);
67
+ border-radius: 15px;
68
+ border: 1px solid rgba(138,43,226,0.2);
69
+ box-shadow: inset 0 0 30px rgba(75,0,130,0.2);
70
+ }
71
+
72
+ .chat-message {
73
+ margin-bottom: 15px;
74
+ padding: 12px 15px;
75
+ background: linear-gradient(135deg, rgba(102,126,234,0.15) 0%, rgba(118,75,162,0.15) 100%);
76
+ border-radius: 15px;
77
+ box-shadow: 0 2px 10px rgba(138,43,226,0.2);
78
+ border: 1px solid rgba(138,43,226,0.1);
79
+ backdrop-filter: blur(5px);
80
+ }
81
+
82
+ .chat-message p {
83
+ margin-bottom: 5px;
84
+ line-height: 1.5;
85
+ }
86
+
87
+ .chat-message p strong {
88
+ font-weight: 600;
89
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-tertiary));
90
+ -webkit-background-clip: text;
91
+ background-clip: text;
92
+ -webkit-text-fill-color: transparent;
93
+ }
94
+
95
+ .chat-message p code {
96
+ background: var(--accent-glow);
97
+ padding: 2px 6px;
98
+ border-radius: 5px;
99
+ font-family: 'Courier New', Courier, monospace;
100
+ color: var(--accent-tertiary);
101
+ border: 1px solid rgba(240,147,251,0.3);
102
+ }
103
+
104
+ .link-group {
105
+ display: flex;
106
+ justify-content: space-between;
107
+ margin: 15px 0;
108
+ padding: 10px;
109
+ background: rgba(15,15,35,0.4);
110
+ border-radius: 10px;
111
+ border: 1px solid rgba(138,43,226,0.2);
112
+ }
113
+
114
+ .link-group a {
115
+ font-size: 14px;
116
+ color: var(--text-secondary);
117
+ text-decoration: none;
118
+ padding: 8px 15px;
119
+ border-radius: 8px;
120
+ transition: all 0.3s ease;
121
+ border: 1px solid transparent;
122
+ }
123
+
124
+ .link-group a:hover {
125
+ background: linear-gradient(135deg, rgba(102,126,234,0.3) 0%, rgba(118,75,162,0.3) 100%);
126
+ border-color: rgba(183,148,246,0.5);
127
+ box-shadow: 0 0 15px var(--accent-glow);
128
+ color: var(--accent-tertiary);
129
+ }
130
+
131
+ form {
132
+ display: flex;
133
+ flex-direction: row;
134
+ width: 100%;
135
+ gap: 10px;
136
+ align-items: center;
137
+ }
138
+
139
+ .chat-input {
140
+ padding: 14px 18px;
141
+ border: 1px solid var(--border-color);
142
+ border-radius: 25px;
143
+ flex-grow: 1;
144
+ font-size: 14px;
145
+ background: rgba(15,15,35,0.8);
146
+ color: var(--text-primary);
147
+ box-shadow: inset 0 2px 10px rgba(0,0,0,0.3), 0 0 20px rgba(138,43,226,0.1);
148
+ transition: all 0.3s ease;
149
+ }
150
+
151
+ .chat-input:focus {
152
+ outline: none;
153
+ border-color: rgba(183,148,246,0.6);
154
+ box-shadow: inset 0 2px 10px rgba(0,0,0,0.3), 0 0 25px rgba(138,43,226,0.3);
155
+ }
156
+
157
+ .chat-input::placeholder {
158
+ color: rgba(183,148,246,0.5);
159
+ }
160
+
161
+ .chat-submit {
162
+ padding: 14px 20px;
163
+ border: none;
164
+ border-radius: 25px;
165
+ font-size: 14px;
166
+ background: linear-gradient(135deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
167
+ color: #fff;
168
+ cursor: pointer;
169
+ transition: all 0.3s ease;
170
+ font-weight: 600;
171
+ letter-spacing: 1px;
172
+ box-shadow: 0 4px 20px rgba(102,126,234,0.4);
173
+ white-space: nowrap;
174
+ }
175
+
176
+ .chat-submit:hover {
177
+ transform: translateY(-2px);
178
+ box-shadow: 0 6px 25px rgba(102,126,234,0.6);
179
+ }
180
+
181
+ .chat-submit:active {
182
+ transform: translateY(0);
183
+ }
184
+
185
+ .viewer-panel {
186
+ flex: 1;
187
+ min-width: 0;
188
+ padding: 20px 20px 20px 44px;
189
+ background: linear-gradient(135deg, rgba(22,33,62,0.9) 0%, rgba(15,15,35,0.95) 100%);
190
+ display: flex;
191
+ flex-direction: column;
192
+ justify-content: center;
193
+ align-items: center;
194
+ box-shadow: inset 0 0 60px rgba(75,0,130,0.15);
195
+ position: relative;
196
+ overflow: hidden;
197
+ }
198
+
199
+ .viewer-panel::before {
200
+ content: '';
201
+ position: absolute;
202
+ top: -50%;
203
+ left: -50%;
204
+ width: 200%;
205
+ height: 200%;
206
+ background: radial-gradient(ellipse at center, rgba(138,43,226,0.05) 0%, transparent 70%);
207
+ animation: nebula-pulse 8s ease-in-out infinite;
208
+ pointer-events: none;
209
+ }
210
+
211
+ @keyframes nebula-pulse {
212
+ 0%,100% { opacity: 0.5; transform: scale(1); }
213
+ 50% { opacity: 1; transform: scale(1.1); }
214
+ }
215
+
216
+ .viewer-panel.full-viewer {
217
+ padding: 0;
218
+ }
219
+
220
+ .loading-overlay {
221
+ display: none;
222
+ position: fixed;
223
+ top: 0;
224
+ left: 0;
225
+ width: 100%;
226
+ height: 100%;
227
+ background: rgba(15,15,35,0.9);
228
+ justify-content: center;
229
+ align-items: center;
230
+ z-index: 1000;
231
+ }
232
+
233
+ .spinner {
234
+ width: 50px;
235
+ height: 50px;
236
+ border: 4px solid var(--border-color);
237
+ border-top-color: var(--accent-tertiary);
238
+ border-radius: 50%;
239
+ animation: spin 1s linear infinite;
240
+ }
241
+
242
+ @keyframes spin {
243
+ to { transform: rotate(360deg); }
244
+ }
245
+
246
+ ::-webkit-scrollbar {
247
+ width: 10px;
248
+ height: 10px;
249
+ }
250
+
251
+ ::-webkit-scrollbar-track {
252
+ background: rgba(15,15,35,0.6);
253
+ border-radius: 10px;
254
+ }
255
+
256
+ ::-webkit-scrollbar-thumb {
257
+ background: linear-gradient(180deg, var(--accent-primary) 0%, var(--accent-secondary) 50%, var(--accent-tertiary) 100%);
258
+ border-radius: 10px;
259
+ border: 2px solid rgba(15,15,35,0.6);
260
+ box-shadow: 0 0 10px var(--accent-glow);
261
+ }
262
+
263
+ ::-webkit-scrollbar-thumb:hover {
264
+ background: linear-gradient(180deg, var(--accent-tertiary) 0%, var(--accent-secondary) 50%, var(--accent-primary) 100%);
265
+ box-shadow: 0 0 15px rgba(240,147,251,0.5);
266
+ }
267
+
268
+ ::-webkit-scrollbar-corner {
269
+ background: rgba(15,15,35,0.6);
270
+ }
271
+
272
+ * {
273
+ scrollbar-width: thin;
274
+ scrollbar-color: var(--accent-secondary) rgba(15,15,35,0.6);
275
+ }
276
+
277
+ /* ---- Chat Toggle ---- */
278
+ .chat-toggle {
279
+ position: fixed;
280
+ left: 30%;
281
+ top: 50%;
282
+ transform: translateY(-50%);
283
+ width: 24px;
284
+ height: 80px;
285
+ background: rgba(22,33,62,0.95);
286
+ border: none;
287
+ border-left: 1px solid var(--border-color);
288
+ border-radius: 0 12px 12px 0;
289
+ cursor: pointer;
290
+ z-index: 1000;
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ padding: 0;
295
+ transition: left 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
296
+ }
297
+
298
+ .chat-toggle:hover {
299
+ background: rgba(30,42,72,1);
300
+ box-shadow: 0 0 20px var(--accent-glow), inset 0 0 15px rgba(138,43,226,0.15);
301
+ }
302
+
303
+ .chat-toggle-dots {
304
+ display: flex;
305
+ flex-direction: column;
306
+ gap: 6px;
307
+ }
308
+
309
+ .chat-toggle-dot {
310
+ width: 4px;
311
+ height: 4px;
312
+ border-radius: 50%;
313
+ background: var(--text-secondary);
314
+ transition: transform 0.3s ease;
315
+ }
316
+
317
+ .chat-toggle:hover .chat-toggle-dot {
318
+ transform: scale(1.4);
319
+ }
320
+
321
+ body.chat-collapsed .chat-panel {
322
+ margin-left: -30%;
323
+ border-right-color: transparent;
324
+ }
325
+
326
+ body.chat-collapsed .chat-toggle {
327
+ left: 0;
328
+ }
329
+
330
+ /* ---- Modal ---- */
331
+ .modal-overlay {
332
+ position: fixed;
333
+ top: 0; left: 0; right: 0; bottom: 0;
334
+ background: rgba(0, 0, 0, 0.6);
335
+ display: none;
336
+ align-items: center;
337
+ justify-content: center;
338
+ z-index: 2000;
339
+ backdrop-filter: blur(4px);
340
+ }
341
+
342
+ .modal-overlay.show { display: flex; }
343
+
344
+ .modal-content {
345
+ background: var(--bg-primary);
346
+ border: 1px solid var(--border-color);
347
+ border-radius: 12px;
348
+ width: 90%;
349
+ max-width: 450px;
350
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
351
+ overflow: hidden;
352
+ }
353
+
354
+ .modal-header {
355
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
356
+ color: white;
357
+ padding: 16px 20px;
358
+ font-size: 18px;
359
+ font-weight: 600;
360
+ }
361
+
362
+ .modal-body { padding: 20px; }
363
+
364
+ .modal-footer {
365
+ padding: 16px 20px;
366
+ border-top: 1px solid var(--border-color);
367
+ display: flex;
368
+ justify-content: space-between;
369
+ align-items: center;
370
+ gap: 12px;
371
+ }
372
+
373
+ .modal-footer-right { display: flex; gap: 10px; margin-left: auto; }
374
+
375
+ /* ---- Form elements ---- */
376
+ .form-group { margin-bottom: 16px; }
377
+ .form-group:last-child { margin-bottom: 0; }
378
+
379
+ .form-label {
380
+ display: block;
381
+ font-size: 13px;
382
+ color: var(--text-secondary);
383
+ margin-bottom: 6px;
384
+ font-weight: 500;
385
+ }
386
+
387
+ .form-input {
388
+ width: 100%;
389
+ padding: 10px 14px;
390
+ border: 1px solid var(--border-color);
391
+ border-radius: 8px;
392
+ background: var(--bg-secondary);
393
+ color: var(--text-primary);
394
+ font-size: 14px;
395
+ outline: none;
396
+ transition: border-color 0.2s ease;
397
+ box-sizing: border-box;
398
+ }
399
+
400
+ .form-input:focus { border-color: var(--accent-primary); }
401
+ .form-input:read-only { opacity: 0.7; cursor: not-allowed; }
402
+ .form-input::placeholder { color: var(--text-secondary); opacity: 0.7; }
403
+
404
+ .checkbox-label {
405
+ display: flex;
406
+ align-items: center;
407
+ gap: 8px;
408
+ cursor: pointer;
409
+ }
410
+
411
+ .checkbox-label input[type="checkbox"] {
412
+ width: 18px;
413
+ height: 18px;
414
+ accent-color: var(--accent-primary);
415
+ cursor: pointer;
416
+ }
417
+
418
+ .checkbox-label span { font-size: 14px; color: var(--text-primary); }
419
+
420
+ /* ---- Modal buttons ---- */
421
+ .modal-btn {
422
+ padding: 10px 20px;
423
+ border-radius: 8px;
424
+ font-size: 14px;
425
+ font-weight: 500;
426
+ cursor: pointer;
427
+ transition: all 0.2s ease;
428
+ border: none;
429
+ }
430
+
431
+ .modal-btn-primary {
432
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
433
+ color: white;
434
+ }
435
+
436
+ .modal-btn-primary:hover {
437
+ filter: brightness(1.1);
438
+ box-shadow: 0 4px 15px var(--accent-glow);
439
+ }
440
+
441
+ .modal-btn-secondary {
442
+ background: var(--bg-secondary);
443
+ color: var(--text-primary);
444
+ border: 1px solid var(--border-color);
445
+ }
446
+
447
+ .modal-btn-secondary:hover {
448
+ background: var(--bg-tertiary);
449
+ border-color: var(--text-secondary);
450
+ }
451
+
452
+ .modal-btn-danger { background: #dc3545; color: white; }
453
+
454
+ .modal-btn-danger:hover {
455
+ background: #c82333;
456
+ box-shadow: 0 4px 15px rgba(220, 53, 69, 0.3);
457
+ }
458
+
459
+ /* ---- Brainstorm icon button (inside input) ---- */
460
+ .chat-input-wrapper {
461
+ position: relative;
462
+ flex: 1;
463
+ display: flex;
464
+ align-items: center;
465
+ }
466
+
467
+ .chat-input-wrapper .chat-input {
468
+ width: 100%;
469
+ padding-right: 36px;
470
+ }
471
+
472
+ .brainstorm-icon-btn {
473
+ position: absolute;
474
+ right: 6px;
475
+ top: 50%;
476
+ transform: translateY(-50%);
477
+ background: transparent;
478
+ border: none;
479
+ color: var(--text-secondary);
480
+ cursor: pointer;
481
+ padding: 4px;
482
+ border-radius: 4px;
483
+ display: flex;
484
+ align-items: center;
485
+ justify-content: center;
486
+ transition: color 0.2s, background 0.2s;
487
+ }
488
+
489
+ .brainstorm-icon-btn:hover {
490
+ color: var(--accent-primary);
491
+ background: var(--accent-glow);
492
+ }
493
+
494
+ /* ---- Brainstorm modal (full-window variant) ---- */
495
+ .brainstorm-modal .modal-content {
496
+ max-width: none;
497
+ width: calc(100% - 80px);
498
+ height: calc(100% - 80px);
499
+ display: flex;
500
+ flex-direction: column;
501
+ }
502
+
503
+ .brainstorm-modal .modal-header {
504
+ display: flex;
505
+ justify-content: space-between;
506
+ align-items: center;
507
+ flex-shrink: 0;
508
+ }
509
+
510
+ .brainstorm-close-btn {
511
+ background: none;
512
+ border: none;
513
+ color: white;
514
+ font-size: 24px;
515
+ cursor: pointer;
516
+ padding: 0 4px;
517
+ line-height: 1;
518
+ opacity: 0.7;
519
+ transition: opacity 0.2s;
520
+ }
521
+
522
+ .brainstorm-close-btn:hover { opacity: 1; }
523
+
524
+ .brainstorm-messages {
525
+ flex: 1;
526
+ overflow-y: auto;
527
+ scrollbar-gutter: stable;
528
+ padding: 20px;
529
+ display: flex;
530
+ flex-direction: column;
531
+ gap: 16px;
532
+ }
533
+
534
+ .brainstorm-message {
535
+ padding: 12px 16px;
536
+ border-radius: 10px;
537
+ font-size: 14px;
538
+ line-height: 1.5;
539
+ max-width: 85%;
540
+ word-wrap: break-word;
541
+ }
542
+
543
+ .brainstorm-user {
544
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
545
+ color: white;
546
+ align-self: flex-end;
547
+ }
548
+
549
+ .brainstorm-assistant {
550
+ background: var(--bg-secondary);
551
+ color: var(--text-primary);
552
+ border: 1px solid var(--border-color);
553
+ align-self: flex-start;
554
+ }
555
+
556
+ .brainstorm-input-row {
557
+ display: flex;
558
+ gap: 8px;
559
+ padding: 16px 20px;
560
+ border-top: 1px solid var(--border-color);
561
+ flex-shrink: 0;
562
+ }
563
+
564
+ .brainstorm-input {
565
+ flex: 1;
566
+ padding: 10px 14px;
567
+ border: 1px solid var(--border-color);
568
+ border-radius: 8px;
569
+ background: var(--bg-secondary);
570
+ color: var(--text-primary);
571
+ font-size: 14px;
572
+ outline: none;
573
+ transition: border-color 0.2s;
574
+ }
575
+
576
+ .brainstorm-input:focus { border-color: var(--accent-primary); }
577
+ .brainstorm-input::placeholder { color: var(--text-secondary); opacity: 0.7; }
578
+
579
+ .brainstorm-send-btn {
580
+ padding: 10px 20px;
581
+ border: none;
582
+ border-radius: 8px;
583
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
584
+ color: white;
585
+ font-size: 14px;
586
+ font-weight: 500;
587
+ cursor: pointer;
588
+ transition: all 0.2s;
589
+ }
590
+
591
+ .brainstorm-send-btn:hover {
592
+ filter: brightness(1.1);
593
+ box-shadow: 0 4px 15px var(--accent-glow);
594
+ }
595
+
596
+ .brainstorm-send-btn:disabled {
597
+ opacity: 0.5;
598
+ cursor: not-allowed;
599
+ }
600
+
601
+ .brainstorm-assistant p { margin: 4px 0; }
602
+ .brainstorm-assistant pre { background: var(--bg-tertiary); padding: 10px; border-radius: 6px; overflow-x: auto; margin: 8px 0; }
603
+ .brainstorm-assistant code { font-size: 13px; }
604
+ .brainstorm-assistant ul, .brainstorm-assistant ol { margin: 4px 0; padding-left: 20px; }
605
+
606
+ .brainstorm-build-row {
607
+ display: flex;
608
+ justify-content: flex-end;
609
+ margin-top: 10px;
610
+ }
611
+
612
+ .brainstorm-build-btn {
613
+ padding: 6px 16px;
614
+ font-size: 12px;
615
+ font-weight: 600;
616
+ border: none;
617
+ border-radius: 6px;
618
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
619
+ color: white;
620
+ cursor: pointer;
621
+ transition: all 0.2s;
622
+ }
623
+
624
+ .brainstorm-build-btn:hover {
625
+ filter: brightness(1.15);
626
+ box-shadow: 0 2px 10px var(--accent-glow);
627
+ }
628
+
629
+ .brainstorm-suggestions {
630
+ display: flex;
631
+ flex-wrap: wrap;
632
+ gap: 6px;
633
+ margin-top: 10px;
634
+ }
635
+
636
+ .brainstorm-suggestion-chip {
637
+ padding: 5px 12px;
638
+ font-size: 12px;
639
+ border: 1px solid var(--border-color);
640
+ border-radius: 16px;
641
+ background: var(--bg-tertiary);
642
+ color: var(--text-secondary);
643
+ cursor: pointer;
644
+ transition: all 0.2s;
645
+ line-height: 1.4;
646
+ }
647
+
648
+ .brainstorm-suggestion-chip:hover {
649
+ border-color: var(--accent-primary);
650
+ color: var(--accent-primary);
651
+ background: var(--accent-glow);
652
+ }
653
+
654
+ .brainstorm-suggestion-chip:disabled {
655
+ opacity: 0.4;
656
+ cursor: default;
657
+ pointer-events: none;
658
+ }
659
+
660
+ .brainstorm-thinking {
661
+ align-self: flex-start;
662
+ padding: 12px 16px;
663
+ background: var(--bg-secondary);
664
+ border: 1px solid var(--border-color);
665
+ border-radius: 10px;
666
+ color: var(--text-secondary);
667
+ font-size: 14px;
668
+ font-style: italic;
669
+ }
670
+
671
+ /* ---- Shared page rules ---- */
672
+ #loadingOverlay { position: absolute; }
673
+ .chat-submit:disabled { opacity: 0.5; cursor: not-allowed; transform: none; }
674
+ .chat-input:disabled { opacity: 0.5; cursor: not-allowed; }
@@ -0,0 +1,19 @@
1
+ {
2
+ "mode": "dark",
3
+ "colors": {
4
+ "bg-primary": "#1a1a2e",
5
+ "bg-secondary": "#16213e",
6
+ "bg-tertiary": "#0f0f23",
7
+ "accent-primary": "#667eea",
8
+ "accent-secondary": "#764ba2",
9
+ "accent-tertiary": "#f093fb",
10
+ "accent-glow": "rgba(138,43,226,0.3)",
11
+ "text-primary": "#e0e0e0",
12
+ "text-secondary": "#b794f6",
13
+ "border-color": "rgba(138,43,226,0.3)",
14
+ "header-min-height": "58px",
15
+ "header-padding-vertical": "14px",
16
+ "header-padding-horizontal": "20px",
17
+ "header-line-height": "1.25"
18
+ }
19
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "synthos",
3
3
  "author": "Steven Ickman",
4
4
  "description": "An AI powered shell experience.",
5
- "version": "0.7.0",
5
+ "version": "0.7.1",
6
6
  "license": "MIT",
7
7
  "keywords": [
8
8
  "synthos",
@@ -54,6 +54,7 @@
54
54
  "src",
55
55
  "default-pages",
56
56
  "default-scripts",
57
+ "default-themes",
57
58
  "required-pages",
58
59
  "images"
59
60
  ]