@cremini/skillpack 1.0.2

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,774 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :root {
8
+ --bg-primary: #fafafa;
9
+ --bg-secondary: #ffffff;
10
+ --bg-tertiary: #f5f5f5;
11
+ --bg-chat: #fafafa;
12
+ --border-color: #e5e5e5;
13
+ --text-primary: #1a1a1a;
14
+ --text-secondary: #999999;
15
+ --text-muted: #666666;
16
+ --accent: #3d9040;
17
+ --accent-hover: #337a36;
18
+ --accent-glow: rgba(61, 144, 64, 0.1);
19
+ --success: #3d9040;
20
+ --error: #ff6b6b;
21
+ --user-bg: rgba(61, 144, 64, 0.1);
22
+ --assistant-bg: #ffffff;
23
+ --radius: 14px;
24
+ --radius-sm: 10px;
25
+ }
26
+
27
+ body {
28
+ font-family:
29
+ "Inter",
30
+ -apple-system,
31
+ BlinkMacSystemFont,
32
+ sans-serif;
33
+ background: var(--bg-primary);
34
+ color: var(--text-primary);
35
+ height: 100vh;
36
+ overflow: hidden;
37
+ }
38
+
39
+ #app {
40
+ display: flex;
41
+ height: 100vh;
42
+ }
43
+
44
+ /* Sidebar */
45
+ #sidebar {
46
+ width: 280px;
47
+ min-width: 280px;
48
+ background: var(--bg-secondary);
49
+ border-right: 1px solid var(--border-color);
50
+ display: flex;
51
+ flex-direction: column;
52
+ overflow-y: auto;
53
+ }
54
+
55
+ .sidebar-header {
56
+ padding: 24px 20px;
57
+ border-bottom: 1px solid var(--border-color);
58
+ background: var(--bg-primary);
59
+ }
60
+
61
+ .sidebar-header h1 {
62
+ font-size: 18px;
63
+ font-weight: 700;
64
+ margin-bottom: 6px;
65
+ color: var(--text-primary);
66
+ }
67
+
68
+ .sidebar-header p {
69
+ font-size: 13px;
70
+ color: var(--text-secondary);
71
+ line-height: 1.4;
72
+ }
73
+
74
+ .sidebar-section {
75
+ padding: 16px 20px;
76
+ border-bottom: 1px solid var(--border-color);
77
+ }
78
+
79
+ .sidebar-section h3 {
80
+ font-size: 11px;
81
+ font-weight: 600;
82
+ text-transform: uppercase;
83
+ letter-spacing: 1px;
84
+ color: var(--text-secondary);
85
+ margin-bottom: 10px;
86
+ }
87
+
88
+ .sidebar-section ul {
89
+ list-style: none;
90
+ }
91
+
92
+ .sidebar-section li {
93
+ padding: 8px 12px;
94
+ font-size: 13px;
95
+ color: var(--text-primary);
96
+ background: var(--bg-tertiary);
97
+ border-radius: var(--radius-sm);
98
+ margin-bottom: 6px;
99
+ cursor: default;
100
+ transition: all 0.2s;
101
+ }
102
+
103
+ .sidebar-section li:hover {
104
+ background: var(--border-color);
105
+ }
106
+
107
+ .skill-name {
108
+ font-weight: 500;
109
+ }
110
+
111
+ .skill-desc {
112
+ font-size: 11px;
113
+ color: var(--text-secondary);
114
+ margin-top: 2px;
115
+ display: -webkit-box;
116
+ -webkit-box-orient: vertical;
117
+ -webkit-line-clamp: 10;
118
+ line-clamp: 10;
119
+ overflow: hidden;
120
+ }
121
+
122
+ /* API Key */
123
+ .provider-select-wrapper {
124
+ margin-bottom: 8px;
125
+ }
126
+
127
+ .provider-select-wrapper select {
128
+ width: 100%;
129
+ padding: 8px 12px;
130
+ background: var(--bg-tertiary);
131
+ border: 1px solid var(--border-color);
132
+ border-radius: var(--radius-sm);
133
+ color: var(--text-primary);
134
+ font-size: 13px;
135
+ outline: none;
136
+ cursor: pointer;
137
+ appearance: none;
138
+ background-image: url('data:image/svg+xml;utf8,<svg fill="%23999" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/></svg>');
139
+ background-repeat: no-repeat;
140
+ background-position-x: 95%;
141
+ background-position-y: center;
142
+ }
143
+
144
+ .api-key-form {
145
+ display: block;
146
+ }
147
+
148
+ .api-key-form input {
149
+ width: 100%;
150
+ padding: 8px 12px;
151
+ background: var(--bg-tertiary);
152
+ border: 1px solid var(--border-color);
153
+ border-radius: var(--radius-sm);
154
+ color: var(--text-primary);
155
+ font-size: 13px;
156
+ outline: none;
157
+ min-width: 0;
158
+ transition: border-color 0.2s;
159
+ }
160
+
161
+ .api-key-form input:focus {
162
+ border-color: var(--accent);
163
+ }
164
+
165
+ .api-key-footer {
166
+ display: flex;
167
+ justify-content: space-between;
168
+ align-items: center;
169
+ margin-top: 12px;
170
+ min-height: 32px;
171
+ }
172
+
173
+ .api-key-footer button {
174
+ padding: 8px 16px;
175
+ background: var(--accent);
176
+ color: white;
177
+ border: none;
178
+ border-radius: var(--radius-sm);
179
+ font-size: 13px;
180
+ font-weight: 500;
181
+ cursor: pointer;
182
+ white-space: nowrap;
183
+ flex-shrink: 0;
184
+ transition: all 0.2s;
185
+ margin-left: auto;
186
+ }
187
+
188
+ .api-key-footer button:hover {
189
+ background: var(--accent-hover);
190
+ box-shadow: 0 0 12px var(--accent-glow);
191
+ }
192
+
193
+ .status-text {
194
+ font-size: 12px;
195
+ margin: 0;
196
+ }
197
+
198
+ .status-text.success {
199
+ color: var(--success);
200
+ }
201
+ .status-text.error {
202
+ color: var(--error);
203
+ }
204
+
205
+ /* Chat Area */
206
+ #chat-area {
207
+ flex: 1;
208
+ display: flex;
209
+ flex-direction: column;
210
+ background: var(--bg-chat);
211
+ height: 100%;
212
+ }
213
+
214
+ #welcome-view {
215
+ display: flex;
216
+ flex-direction: column;
217
+ align-items: center;
218
+ justify-content: center;
219
+ overflow: hidden;
220
+ transition:
221
+ flex 0.6s cubic-bezier(0.4, 0, 0.2, 1),
222
+ opacity 0.4s ease,
223
+ padding 0.6s ease;
224
+ }
225
+
226
+ #chat-view {
227
+ display: flex;
228
+ flex-direction: column;
229
+ overflow: hidden;
230
+ transition:
231
+ flex 0.6s cubic-bezier(0.4, 0, 0.2, 1),
232
+ opacity 0.6s ease;
233
+ }
234
+
235
+ .mode-welcome #welcome-view {
236
+ flex: 1 1 50%;
237
+ opacity: 1;
238
+ padding: 20px 40px;
239
+ pointer-events: auto;
240
+ }
241
+ .mode-chat #welcome-view {
242
+ flex: 0 0 0%;
243
+ opacity: 0;
244
+ padding: 0;
245
+ pointer-events: none;
246
+ }
247
+
248
+ .mode-welcome #chat-view {
249
+ flex: 0 0 0%;
250
+ opacity: 0;
251
+ pointer-events: none;
252
+ }
253
+ .mode-chat #chat-view {
254
+ flex: 1 1 100%;
255
+ opacity: 1;
256
+ pointer-events: auto;
257
+ }
258
+
259
+ #messages {
260
+ flex: 1;
261
+ overflow-y: auto;
262
+ padding: 24px;
263
+ padding-bottom: 30px;
264
+ display: flex;
265
+ flex-direction: column;
266
+ gap: 16px;
267
+ }
268
+
269
+ .message {
270
+ max-width: 720px;
271
+ width: 100%;
272
+ padding: 16px 20px;
273
+ border-radius: var(--radius);
274
+ font-size: 14px;
275
+ line-height: 1.6;
276
+ animation: fadeIn 0.3s ease;
277
+ }
278
+
279
+ @keyframes fadeIn {
280
+ from {
281
+ opacity: 0;
282
+ transform: translateY(8px);
283
+ }
284
+ to {
285
+ opacity: 1;
286
+ transform: translateY(0);
287
+ }
288
+ }
289
+
290
+ .message.user {
291
+ background: var(--user-bg);
292
+ margin-left: auto;
293
+ border: 1px solid var(--border-color);
294
+ }
295
+
296
+ .message.assistant {
297
+ margin-right: auto;
298
+ background: transparent;
299
+ border: none;
300
+ padding: 0;
301
+ display: flex;
302
+ flex-direction: column;
303
+ gap: 12px;
304
+ }
305
+
306
+ .message.assistant > .text-block,
307
+ .message.assistant > .error-text {
308
+ background: var(--assistant-bg);
309
+ border: 1px solid var(--border-color);
310
+ padding: 16px 20px;
311
+ border-radius: var(--radius);
312
+ }
313
+
314
+ .message.assistant .content {
315
+ white-space: pre-wrap;
316
+ word-break: break-word;
317
+ }
318
+
319
+ .message.assistant .markdown-body {
320
+ white-space: normal;
321
+ }
322
+
323
+ .message.error > .text-block,
324
+ .message.error > .error-text {
325
+ background: rgba(255, 107, 107, 0.1);
326
+ border: 1px solid rgba(255, 107, 107, 0.3);
327
+ color: var(--error);
328
+ }
329
+
330
+ .welcome-message {
331
+ text-align: center;
332
+ padding: 40px 20px;
333
+ color: var(--text-secondary);
334
+ }
335
+
336
+ .welcome-message h2 {
337
+ font-size: 24px;
338
+ font-weight: 700;
339
+ margin-bottom: 8px;
340
+ color: var(--text-primary);
341
+ }
342
+
343
+ .welcome-message p {
344
+ font-size: 14px;
345
+ }
346
+
347
+ /* Prompt Cards in Welcome Message */
348
+ .prompt-cards {
349
+ display: flex;
350
+ flex-wrap: wrap;
351
+ gap: 16px;
352
+ justify-content: center;
353
+ margin-top: 40px;
354
+ max-width: 800px;
355
+ margin-left: auto;
356
+ margin-right: auto;
357
+ }
358
+
359
+ .prompt-card {
360
+ background: var(--bg-secondary);
361
+ border: 1px solid var(--border-color);
362
+ border-radius: var(--radius);
363
+ padding: 20px;
364
+ font-size: 14px;
365
+ color: var(--text-primary);
366
+ cursor: pointer;
367
+ transition: all 0.2s ease;
368
+ flex: 1 1 calc(33.333% - 16px);
369
+ min-width: 220px;
370
+ max-width: calc(50% - 8px);
371
+ text-align: left;
372
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.03);
373
+ display: flex;
374
+ align-items: center;
375
+ line-height: 1.5;
376
+ }
377
+
378
+ .prompt-card:hover {
379
+ border-color: var(--accent);
380
+ box-shadow: 0 6px 16px var(--accent-glow);
381
+ transform: translateY(-2px);
382
+ }
383
+
384
+ /* Input Area */
385
+ #input-area {
386
+ transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
387
+ width: 100%;
388
+ flex-shrink: 0;
389
+ }
390
+
391
+ .mode-welcome #input-area {
392
+ margin: 0 auto;
393
+ margin-bottom: 8vh;
394
+ max-width: 800px;
395
+ padding: 0 20px;
396
+ background: transparent;
397
+ border-top: 1px solid transparent;
398
+ }
399
+
400
+ .mode-chat #input-area {
401
+ margin-bottom: 0;
402
+ max-width: 100%;
403
+ padding: 17px 32px 32px 32px;
404
+ background: var(--bg-secondary);
405
+ border-top: 1px solid var(--border-color);
406
+ }
407
+
408
+ .input-container {
409
+ display: flex;
410
+ gap: 12px;
411
+ align-items: flex-end;
412
+ background: var(--bg-chat);
413
+ border: 1px solid var(--border-color);
414
+ transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
415
+ }
416
+
417
+ .mode-welcome .input-container {
418
+ border-radius: 24px;
419
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06);
420
+ padding: 16px 20px;
421
+ min-height: 64px;
422
+ }
423
+
424
+ .mode-welcome .input-container:focus-within {
425
+ border-color: var(--accent);
426
+ box-shadow:
427
+ 0 8px 32px rgba(0, 0, 0, 0.06),
428
+ 0 0 0 3px var(--accent-glow);
429
+ }
430
+
431
+ .mode-chat .input-container {
432
+ border-radius: 14px;
433
+ padding: 12px 12px 12px 17px;
434
+ min-height: 58px;
435
+ max-width: 800px;
436
+ margin: 0 auto;
437
+ }
438
+
439
+ .mode-chat .input-container:focus-within {
440
+ border-color: var(--accent);
441
+ box-shadow: 0 0 0 3px var(--accent-glow);
442
+ }
443
+
444
+ .powered-by {
445
+ margin-top: 10px;
446
+ text-align: center;
447
+ font-size: 12px;
448
+ line-height: 1.4;
449
+ color: var(--text-secondary);
450
+ }
451
+
452
+ .powered-by a {
453
+ color: var(--text-muted);
454
+ text-decoration: none;
455
+ transition: color 0.2s ease;
456
+ }
457
+
458
+ .powered-by a:hover {
459
+ color: var(--accent);
460
+ }
461
+
462
+ #user-input {
463
+ flex: 1;
464
+ padding: 6px 0;
465
+ background: transparent;
466
+ border: none;
467
+ color: var(--text-primary);
468
+ font-size: 13px;
469
+ font-family: inherit;
470
+ resize: none;
471
+ outline: none;
472
+ max-height: 120px;
473
+ line-height: 20px;
474
+ }
475
+
476
+ #user-input::placeholder {
477
+ color: var(--text-secondary);
478
+ }
479
+
480
+ #send-btn {
481
+ width: 32px;
482
+ height: 32px;
483
+ background: var(--accent);
484
+ border: none;
485
+ border-radius: 10px;
486
+ color: white;
487
+ cursor: pointer;
488
+ display: flex;
489
+ align-items: center;
490
+ justify-content: center;
491
+ transition: all 0.2s;
492
+ flex-shrink: 0;
493
+ }
494
+
495
+ #send-btn:hover {
496
+ background: var(--accent-hover);
497
+ box-shadow: 0 0 16px var(--accent-glow);
498
+ transform: scale(1.05);
499
+ }
500
+
501
+ #send-btn:disabled {
502
+ opacity: 0.5;
503
+ cursor: not-allowed;
504
+ transform: none;
505
+ }
506
+
507
+ /* Scrollbar */
508
+ ::-webkit-scrollbar {
509
+ width: 6px;
510
+ height: 6px;
511
+ }
512
+ ::-webkit-scrollbar-track {
513
+ background: transparent;
514
+ }
515
+ ::-webkit-scrollbar-thumb {
516
+ background: var(--border-color);
517
+ border-radius: 3px;
518
+ }
519
+ ::-webkit-scrollbar-thumb:hover {
520
+ background: var(--text-secondary);
521
+ }
522
+
523
+ .tool-card ::-webkit-scrollbar {
524
+ width: 6px;
525
+ height: 3px;
526
+ }
527
+
528
+ /* Responsive */
529
+ @media (max-width: 768px) {
530
+ #sidebar {
531
+ width: 100%;
532
+ min-width: unset;
533
+ position: fixed;
534
+ top: 0;
535
+ left: -100%;
536
+ z-index: 100;
537
+ transition: left 0.3s;
538
+ }
539
+ #sidebar.open {
540
+ left: 0;
541
+ }
542
+ }
543
+
544
+ /* Tool Cards */
545
+ .tool-card {
546
+ background: var(--bg-secondary);
547
+ border: 1px solid var(--border-color);
548
+ border-radius: var(--radius);
549
+ margin: 0;
550
+ overflow: hidden;
551
+ font-size: 13px;
552
+ transition: all 0.3s ease;
553
+ }
554
+
555
+ .tool-card.collapsed .tool-content {
556
+ display: none;
557
+ }
558
+
559
+ .tool-card.collapsed .tool-header {
560
+ border-bottom: none;
561
+ }
562
+
563
+ .tool-header {
564
+ padding: 0 16px;
565
+ height: 36.5px;
566
+ background: #f8f9fa;
567
+ border-bottom: 1px solid var(--border-color);
568
+ display: flex;
569
+ align-items: center;
570
+ gap: 8px;
571
+ cursor: pointer;
572
+ user-select: none;
573
+ }
574
+
575
+ .tool-header:hover {
576
+ background: #f1f3f5;
577
+ }
578
+
579
+ .tool-chevron {
580
+ display: flex;
581
+ align-items: center;
582
+ justify-content: center;
583
+ color: var(--text-secondary);
584
+ transition: transform 0.3s ease;
585
+ }
586
+
587
+ .tool-card.collapsed .tool-chevron {
588
+ transform: rotate(-90deg);
589
+ }
590
+
591
+ .tool-name {
592
+ font-family: "Inter", sans-serif;
593
+ font-weight: 500;
594
+ color: var(--accent);
595
+ }
596
+
597
+ .tool-status {
598
+ margin-left: auto;
599
+ font-size: 14px;
600
+ }
601
+
602
+ @keyframes spin {
603
+ 100% {
604
+ transform: rotate(360deg);
605
+ }
606
+ }
607
+ .tool-status.spinner {
608
+ display: inline-block;
609
+ width: 14px;
610
+ height: 14px;
611
+ border: 2px solid var(--border-color);
612
+ border-top-color: var(--accent);
613
+ border-radius: 50%;
614
+ animation: spin 0.8s linear infinite;
615
+ }
616
+
617
+ .tool-input,
618
+ .tool-result {
619
+ padding: 0;
620
+ background: var(--bg-secondary);
621
+ color: var(--text-primary);
622
+ }
623
+
624
+ .tool-result {
625
+ border-top: 1px solid var(--border-color);
626
+ background: var(--bg-secondary);
627
+ }
628
+
629
+ .tool-card .markdown-body pre {
630
+ background: transparent;
631
+ margin: 0;
632
+ padding: 16px;
633
+ border: none;
634
+ border-radius: 0;
635
+ }
636
+
637
+ .tool-card .markdown-body pre code {
638
+ color: var(--text-primary);
639
+ }
640
+
641
+ /* Markdown Specifics */
642
+ .markdown-body pre {
643
+ background: #f8f9fa;
644
+ padding: 12px 16px;
645
+ border-radius: 6px;
646
+ overflow-x: auto;
647
+ margin: 8px 0;
648
+ border: 1px solid var(--border-color);
649
+ }
650
+ .markdown-body code {
651
+ font-family: Menlo, Monaco, "Courier New", monospace;
652
+ background: rgba(0, 0, 0, 0.05);
653
+ padding: 2px 4px;
654
+ border-radius: 4px;
655
+ color: var(--text-primary);
656
+ }
657
+ .markdown-body pre code {
658
+ background: transparent;
659
+ padding: 0;
660
+ font-size: 12px;
661
+ }
662
+ .markdown-body p {
663
+ margin-bottom: 8px;
664
+ }
665
+ .markdown-body p:last-child {
666
+ margin-bottom: 0;
667
+ }
668
+ .markdown-body h1,
669
+ .markdown-body h2,
670
+ .markdown-body h3,
671
+ .markdown-body h4 {
672
+ line-height: 1.3;
673
+ margin: 20px 0 10px;
674
+ font-weight: 700;
675
+ }
676
+ .markdown-body h1 {
677
+ font-size: 28px;
678
+ }
679
+ .markdown-body h2 {
680
+ font-size: 22px;
681
+ }
682
+ .markdown-body h3 {
683
+ font-size: 18px;
684
+ }
685
+ .markdown-body h4 {
686
+ font-size: 16px;
687
+ }
688
+ .markdown-body ul,
689
+ .markdown-body ol {
690
+ margin: 10px 0 14px;
691
+ padding-left: 22px;
692
+ }
693
+ .markdown-body li {
694
+ margin: 6px 0;
695
+ }
696
+ .markdown-body blockquote {
697
+ margin: 12px 0;
698
+ padding-left: 14px;
699
+ border-left: 3px solid var(--border-color);
700
+ color: var(--text-muted);
701
+ }
702
+ .markdown-body hr {
703
+ margin: 18px 0;
704
+ border: 0;
705
+ border-top: 1px solid var(--border-color);
706
+ }
707
+ .markdown-body a {
708
+ color: var(--accent);
709
+ }
710
+ .markdown-body > :first-child {
711
+ margin-top: 0;
712
+ }
713
+ .markdown-body > :last-child {
714
+ margin-bottom: 0;
715
+ }
716
+
717
+ .embedded-markdown-preview {
718
+ margin: 12px 0;
719
+ padding: 16px 18px;
720
+ border: 1px solid var(--border-color);
721
+ border-radius: 10px;
722
+ background: #fcfcfc;
723
+ }
724
+
725
+ /* Loading Indicator */
726
+ .loading-indicator {
727
+ display: none;
728
+ align-items: center;
729
+ gap: 4px;
730
+ padding: 0 16px;
731
+ margin-top: 4px;
732
+ }
733
+
734
+ .loading-indicator span {
735
+ width: 6px;
736
+ height: 6px;
737
+ background-color: var(--text-secondary);
738
+ border-radius: 50%;
739
+ animation: bounce 1.4s infinite ease-in-out both;
740
+ }
741
+
742
+ .loading-indicator span:nth-child(1) {
743
+ animation-delay: -0.32s;
744
+ }
745
+ .loading-indicator span:nth-child(2) {
746
+ animation-delay: -0.16s;
747
+ }
748
+
749
+ @keyframes bounce {
750
+ 0%,
751
+ 80%,
752
+ 100% {
753
+ transform: scale(0);
754
+ opacity: 0.5;
755
+ }
756
+ 40% {
757
+ transform: scale(1);
758
+ opacity: 1;
759
+ }
760
+ }
761
+
762
+ /* Thinking Block */
763
+ .thinking-content {
764
+ padding: 12px 16px;
765
+ background: var(--bg-tertiary);
766
+ border-top: 1px solid var(--border-color);
767
+ }
768
+
769
+ .thinking-content p {
770
+ margin-bottom: 8px;
771
+ }
772
+ .thinking-content p:last-child {
773
+ margin-bottom: 0;
774
+ }