claude-code-templates 1.15.0 → 1.15.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.
- package/README.md +7 -7
- package/bin/create-claude-config.js +15 -8
- package/package.json +2 -3
- package/src/analytics/core/AgentAnalyzer.js +17 -3
- package/src/analytics/core/ProcessDetector.js +23 -7
- package/src/analytics/core/StateCalculator.js +102 -33
- package/src/analytics/data/DataCache.js +7 -7
- package/src/analytics-web/chats_mobile.html +2590 -0
- package/src/analytics-web/components/App.js +10 -10
- package/src/analytics-web/components/SessionTimer.js +1 -1
- package/src/analytics-web/components/Sidebar.js +5 -14
- package/src/analytics-web/index.html +932 -78
- package/src/analytics.js +263 -5
- package/src/chats-mobile.js +682 -0
- package/src/claude-api-proxy.js +460 -0
- package/src/file-operations.js +422 -83
- package/src/health-check.js +310 -0
- package/src/index.js +944 -56
- package/src/tracking-service.js +31 -34
- package/components/agents/api-security-audit.md +0 -92
- package/components/agents/database-optimization.md +0 -94
- package/components/agents/react-performance-optimization.md +0 -64
- package/components/commands/check-file.md +0 -53
- package/components/commands/generate-tests.md +0 -68
- package/components/mcps/deepgraph-nextjs.json +0 -12
- package/components/mcps/deepgraph-react.json +0 -12
- package/components/mcps/deepgraph-typescript.json +0 -12
- package/components/mcps/deepgraph-vue.json +0 -12
- package/components/mcps/filesystem-access.json +0 -12
- package/components/mcps/github-integration.json +0 -11
- package/components/mcps/memory-integration.json +0 -8
- package/components/mcps/mysql-integration.json +0 -11
- package/components/mcps/postgresql-integration.json +0 -11
- package/components/mcps/web-fetch.json +0 -8
- package/src/analytics-web/components/AgentsPage.js +0 -4761
- package/templates/common/.claude/commands/git-workflow.md +0 -239
- package/templates/common/.claude/commands/project-setup.md +0 -316
- package/templates/common/.mcp.json +0 -41
- package/templates/common/CLAUDE.md +0 -109
- package/templates/common/README.md +0 -96
- package/templates/go/.mcp.json +0 -78
- package/templates/go/README.md +0 -25
- package/templates/javascript-typescript/.claude/commands/api-endpoint.md +0 -51
- package/templates/javascript-typescript/.claude/commands/debug.md +0 -52
- package/templates/javascript-typescript/.claude/commands/lint.md +0 -48
- package/templates/javascript-typescript/.claude/commands/npm-scripts.md +0 -48
- package/templates/javascript-typescript/.claude/commands/refactor.md +0 -55
- package/templates/javascript-typescript/.claude/commands/test.md +0 -61
- package/templates/javascript-typescript/.claude/commands/typescript-migrate.md +0 -51
- package/templates/javascript-typescript/.claude/settings.json +0 -142
- package/templates/javascript-typescript/.mcp.json +0 -80
- package/templates/javascript-typescript/CLAUDE.md +0 -185
- package/templates/javascript-typescript/README.md +0 -259
- package/templates/javascript-typescript/examples/angular-app/.claude/commands/components.md +0 -63
- package/templates/javascript-typescript/examples/angular-app/.claude/commands/services.md +0 -62
- package/templates/javascript-typescript/examples/node-api/.claude/commands/api-endpoint.md +0 -46
- package/templates/javascript-typescript/examples/node-api/.claude/commands/database.md +0 -56
- package/templates/javascript-typescript/examples/node-api/.claude/commands/middleware.md +0 -61
- package/templates/javascript-typescript/examples/node-api/.claude/commands/route.md +0 -57
- package/templates/javascript-typescript/examples/node-api/CLAUDE.md +0 -102
- package/templates/javascript-typescript/examples/react-app/.claude/commands/component.md +0 -29
- package/templates/javascript-typescript/examples/react-app/.claude/commands/hooks.md +0 -44
- package/templates/javascript-typescript/examples/react-app/.claude/commands/state-management.md +0 -45
- package/templates/javascript-typescript/examples/react-app/CLAUDE.md +0 -81
- package/templates/javascript-typescript/examples/react-app/agents/react-performance-optimization.md +0 -530
- package/templates/javascript-typescript/examples/react-app/agents/react-state-management.md +0 -295
- package/templates/javascript-typescript/examples/vue-app/.claude/commands/components.md +0 -46
- package/templates/javascript-typescript/examples/vue-app/.claude/commands/composables.md +0 -51
- package/templates/python/.claude/commands/lint.md +0 -111
- package/templates/python/.claude/commands/test.md +0 -73
- package/templates/python/.claude/settings.json +0 -153
- package/templates/python/.mcp.json +0 -78
- package/templates/python/CLAUDE.md +0 -276
- package/templates/python/examples/django-app/.claude/commands/admin.md +0 -264
- package/templates/python/examples/django-app/.claude/commands/django-model.md +0 -124
- package/templates/python/examples/django-app/.claude/commands/views.md +0 -222
- package/templates/python/examples/django-app/CLAUDE.md +0 -313
- package/templates/python/examples/django-app/agents/django-api-security.md +0 -642
- package/templates/python/examples/django-app/agents/django-database-optimization.md +0 -752
- package/templates/python/examples/fastapi-app/.claude/commands/api-endpoints.md +0 -513
- package/templates/python/examples/fastapi-app/.claude/commands/auth.md +0 -775
- package/templates/python/examples/fastapi-app/.claude/commands/database.md +0 -657
- package/templates/python/examples/fastapi-app/.claude/commands/deployment.md +0 -160
- package/templates/python/examples/fastapi-app/.claude/commands/testing.md +0 -927
- package/templates/python/examples/fastapi-app/CLAUDE.md +0 -229
- package/templates/python/examples/flask-app/.claude/commands/app-factory.md +0 -384
- package/templates/python/examples/flask-app/.claude/commands/blueprint.md +0 -243
- package/templates/python/examples/flask-app/.claude/commands/database.md +0 -410
- package/templates/python/examples/flask-app/.claude/commands/deployment.md +0 -620
- package/templates/python/examples/flask-app/.claude/commands/flask-route.md +0 -217
- package/templates/python/examples/flask-app/.claude/commands/testing.md +0 -559
- package/templates/python/examples/flask-app/CLAUDE.md +0 -391
- package/templates/ruby/.claude/commands/model.md +0 -360
- package/templates/ruby/.claude/commands/test.md +0 -480
- package/templates/ruby/.claude/settings.json +0 -146
- package/templates/ruby/.mcp.json +0 -83
- package/templates/ruby/CLAUDE.md +0 -284
- package/templates/ruby/examples/rails-app/.claude/commands/authentication.md +0 -490
- package/templates/ruby/examples/rails-app/CLAUDE.md +0 -376
- package/templates/rust/.mcp.json +0 -78
- package/templates/rust/README.md +0 -26
|
@@ -1673,7 +1673,7 @@
|
|
|
1673
1673
|
}
|
|
1674
1674
|
|
|
1675
1675
|
.message-time {
|
|
1676
|
-
color:
|
|
1676
|
+
color: white;
|
|
1677
1677
|
font-size: 0.75rem;
|
|
1678
1678
|
}
|
|
1679
1679
|
|
|
@@ -2597,6 +2597,145 @@
|
|
|
2597
2597
|
font-size: 0.8rem;
|
|
2598
2598
|
}
|
|
2599
2599
|
|
|
2600
|
+
/* Mobile-first Agents page layout */
|
|
2601
|
+
.agents-page {
|
|
2602
|
+
position: fixed;
|
|
2603
|
+
top: 0;
|
|
2604
|
+
left: 0;
|
|
2605
|
+
right: 0;
|
|
2606
|
+
bottom: 0;
|
|
2607
|
+
background: var(--bg-primary);
|
|
2608
|
+
z-index: 1000;
|
|
2609
|
+
display: flex;
|
|
2610
|
+
flex-direction: column;
|
|
2611
|
+
max-width: none;
|
|
2612
|
+
margin: 0;
|
|
2613
|
+
overflow: hidden;
|
|
2614
|
+
}
|
|
2615
|
+
|
|
2616
|
+
/* Hide main page sidebar and other elements on mobile Agents page */
|
|
2617
|
+
body:has(.agents-page) .sidebar:not(.mobile-chat-submenu),
|
|
2618
|
+
.agents-page .terminal-header,
|
|
2619
|
+
.agents-page .conversations-filters,
|
|
2620
|
+
.agents-page .agents-section,
|
|
2621
|
+
.agents-page .conversations-sidebar,
|
|
2622
|
+
.agents-page .conversations-loading,
|
|
2623
|
+
.agents-page .conversations-error {
|
|
2624
|
+
display: none !important;
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
/* Show mobile menu button initially */
|
|
2628
|
+
.agents-page .mobile-menu-btn {
|
|
2629
|
+
display: flex !important;
|
|
2630
|
+
position: fixed;
|
|
2631
|
+
top: 10px;
|
|
2632
|
+
left: 10px;
|
|
2633
|
+
z-index: 1200;
|
|
2634
|
+
background: var(--bg-secondary);
|
|
2635
|
+
border: 1px solid var(--border-primary);
|
|
2636
|
+
}
|
|
2637
|
+
|
|
2638
|
+
/* Hide mobile menu button when viewing chat */
|
|
2639
|
+
body:has(.mobile-chat-header-bar[style*="flex"]) .mobile-menu-btn {
|
|
2640
|
+
display: none !important;
|
|
2641
|
+
}
|
|
2642
|
+
|
|
2643
|
+
/* Hide page header on mobile Agents page */
|
|
2644
|
+
.agents-page #agents-header-container {
|
|
2645
|
+
display: none !important;
|
|
2646
|
+
}
|
|
2647
|
+
|
|
2648
|
+
/* Mobile header for chat */
|
|
2649
|
+
.mobile-chat-header-bar {
|
|
2650
|
+
position: fixed;
|
|
2651
|
+
top: 0;
|
|
2652
|
+
left: 0;
|
|
2653
|
+
right: 0;
|
|
2654
|
+
height: 60px;
|
|
2655
|
+
background: var(--bg-secondary);
|
|
2656
|
+
border-bottom: 1px solid var(--border-primary);
|
|
2657
|
+
z-index: 1100;
|
|
2658
|
+
display: flex;
|
|
2659
|
+
align-items: center;
|
|
2660
|
+
padding: 0 16px;
|
|
2661
|
+
gap: 12px;
|
|
2662
|
+
}
|
|
2663
|
+
|
|
2664
|
+
.mobile-back-btn {
|
|
2665
|
+
background: none;
|
|
2666
|
+
border: none;
|
|
2667
|
+
color: var(--text-accent);
|
|
2668
|
+
font-size: 20px;
|
|
2669
|
+
cursor: pointer;
|
|
2670
|
+
padding: 8px;
|
|
2671
|
+
border-radius: 4px;
|
|
2672
|
+
display: flex;
|
|
2673
|
+
align-items: center;
|
|
2674
|
+
justify-content: center;
|
|
2675
|
+
min-width: 40px;
|
|
2676
|
+
height: 40px;
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2679
|
+
.mobile-back-btn:hover {
|
|
2680
|
+
background: var(--bg-tertiary);
|
|
2681
|
+
}
|
|
2682
|
+
|
|
2683
|
+
.mobile-chat-title {
|
|
2684
|
+
flex: 1;
|
|
2685
|
+
font-size: 1rem;
|
|
2686
|
+
color: var(--text-primary);
|
|
2687
|
+
font-weight: 600;
|
|
2688
|
+
text-overflow: ellipsis;
|
|
2689
|
+
overflow: hidden;
|
|
2690
|
+
white-space: nowrap;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
.mobile-chat-subtitle {
|
|
2694
|
+
font-size: 0.8rem;
|
|
2695
|
+
color: var(--text-secondary);
|
|
2696
|
+
text-overflow: ellipsis;
|
|
2697
|
+
overflow: hidden;
|
|
2698
|
+
white-space: nowrap;
|
|
2699
|
+
}
|
|
2700
|
+
|
|
2701
|
+
/* Full-screen chat panel on mobile */
|
|
2702
|
+
.conversation-details {
|
|
2703
|
+
position: fixed;
|
|
2704
|
+
top: 60px;
|
|
2705
|
+
left: 0;
|
|
2706
|
+
right: 0;
|
|
2707
|
+
bottom: 0;
|
|
2708
|
+
background: var(--bg-primary);
|
|
2709
|
+
z-index: 1000;
|
|
2710
|
+
display: flex;
|
|
2711
|
+
flex-direction: column;
|
|
2712
|
+
overflow: hidden;
|
|
2713
|
+
margin: 0;
|
|
2714
|
+
padding: 0;
|
|
2715
|
+
}
|
|
2716
|
+
|
|
2717
|
+
.conversation-header {
|
|
2718
|
+
display: none !important;
|
|
2719
|
+
}
|
|
2720
|
+
|
|
2721
|
+
.messages-panel {
|
|
2722
|
+
flex: 1;
|
|
2723
|
+
padding: 16px;
|
|
2724
|
+
overflow-y: auto;
|
|
2725
|
+
background: var(--bg-primary);
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
/* Ensure mobile menu button is visible */
|
|
2729
|
+
.mobile-menu-btn {
|
|
2730
|
+
display: flex !important;
|
|
2731
|
+
position: fixed;
|
|
2732
|
+
top: 10px;
|
|
2733
|
+
left: 10px;
|
|
2734
|
+
z-index: 1200;
|
|
2735
|
+
background: var(--bg-secondary);
|
|
2736
|
+
border: 1px solid var(--border-primary);
|
|
2737
|
+
}
|
|
2738
|
+
|
|
2600
2739
|
.sessions-table th,
|
|
2601
2740
|
.sessions-table td {
|
|
2602
2741
|
padding: 6px 8px;
|
|
@@ -2655,6 +2794,70 @@
|
|
|
2655
2794
|
overflow-y: auto;
|
|
2656
2795
|
}
|
|
2657
2796
|
|
|
2797
|
+
/* Mobile menu button - hidden on desktop, shown on mobile */
|
|
2798
|
+
.mobile-menu-btn {
|
|
2799
|
+
display: none;
|
|
2800
|
+
}
|
|
2801
|
+
|
|
2802
|
+
@media (max-width: 768px) {
|
|
2803
|
+
.mobile-menu-btn {
|
|
2804
|
+
display: flex !important;
|
|
2805
|
+
}
|
|
2806
|
+
|
|
2807
|
+
.mobile-chat-submenu {
|
|
2808
|
+
/* This submenu is no longer used - navigation goes to separate page */
|
|
2809
|
+
display: none !important;
|
|
2810
|
+
}
|
|
2811
|
+
|
|
2812
|
+
.mobile-chat-submenu.active {
|
|
2813
|
+
display: none !important;
|
|
2814
|
+
}
|
|
2815
|
+
|
|
2816
|
+
.mobile-chat-header {
|
|
2817
|
+
padding: 16px 20px;
|
|
2818
|
+
border-bottom: 1px solid var(--border-primary);
|
|
2819
|
+
background: var(--bg-secondary);
|
|
2820
|
+
display: flex;
|
|
2821
|
+
align-items: center;
|
|
2822
|
+
gap: 12px;
|
|
2823
|
+
}
|
|
2824
|
+
|
|
2825
|
+
.mobile-chat-header h3 {
|
|
2826
|
+
margin: 0;
|
|
2827
|
+
font-size: 1.1rem;
|
|
2828
|
+
color: var(--text-primary);
|
|
2829
|
+
font-weight: 600;
|
|
2830
|
+
}
|
|
2831
|
+
|
|
2832
|
+
.mobile-chat-close {
|
|
2833
|
+
background: none;
|
|
2834
|
+
border: none;
|
|
2835
|
+
color: var(--text-secondary);
|
|
2836
|
+
font-size: 1.2rem;
|
|
2837
|
+
cursor: pointer;
|
|
2838
|
+
padding: 4px;
|
|
2839
|
+
margin-left: auto;
|
|
2840
|
+
transition: color 0.2s ease;
|
|
2841
|
+
}
|
|
2842
|
+
|
|
2843
|
+
.mobile-chat-close:hover {
|
|
2844
|
+
color: var(--text-primary);
|
|
2845
|
+
}
|
|
2846
|
+
|
|
2847
|
+
.mobile-chat-item {
|
|
2848
|
+
cursor: pointer;
|
|
2849
|
+
transition: background-color 0.2s ease;
|
|
2850
|
+
}
|
|
2851
|
+
|
|
2852
|
+
.mobile-chat-item:hover {
|
|
2853
|
+
background: rgba(33, 38, 45, 0.6);
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
|
|
2857
|
+
.mobile-overlay {
|
|
2858
|
+
display: none;
|
|
2859
|
+
}
|
|
2860
|
+
|
|
2658
2861
|
/* Minimalist Console Sidebar */
|
|
2659
2862
|
.sidebar {
|
|
2660
2863
|
width: 56px;
|
|
@@ -2938,12 +3141,134 @@
|
|
|
2938
3141
|
|
|
2939
3142
|
/* Responsive adjustments */
|
|
2940
3143
|
@media (max-width: 768px) {
|
|
3144
|
+
/* Disable hover functionality on mobile */
|
|
2941
3145
|
.sidebar {
|
|
2942
|
-
width:
|
|
3146
|
+
width: 56px;
|
|
3147
|
+
transform: translateX(-100%);
|
|
3148
|
+
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
3149
|
+
z-index: 1001;
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
/* Remove hover expansion on mobile */
|
|
3153
|
+
.sidebar:hover {
|
|
3154
|
+
width: 56px;
|
|
3155
|
+
background: var(--bg-primary);
|
|
3156
|
+
border-right: 1px solid var(--border-primary);
|
|
3157
|
+
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.1);
|
|
3158
|
+
}
|
|
3159
|
+
|
|
3160
|
+
/* Mobile open state */
|
|
3161
|
+
.sidebar.mobile-open {
|
|
3162
|
+
width: 280px;
|
|
3163
|
+
transform: translateX(0);
|
|
3164
|
+
background: var(--bg-secondary);
|
|
3165
|
+
border-right: 1px solid var(--text-accent);
|
|
3166
|
+
box-shadow: 4px 0 16px rgba(213, 116, 85, 0.1);
|
|
3167
|
+
}
|
|
3168
|
+
|
|
3169
|
+
/* Force expanded state when mobile open */
|
|
3170
|
+
.sidebar.mobile-open .logo-text,
|
|
3171
|
+
.sidebar.mobile-open .nav-text,
|
|
3172
|
+
.sidebar.mobile-open .status-text {
|
|
3173
|
+
opacity: 1;
|
|
3174
|
+
transform: translateX(0);
|
|
3175
|
+
}
|
|
3176
|
+
|
|
3177
|
+
.sidebar.mobile-open .nav-link {
|
|
3178
|
+
display: flex;
|
|
3179
|
+
align-items: center;
|
|
3180
|
+
justify-content: flex-start;
|
|
3181
|
+
gap: 12px;
|
|
3182
|
+
padding: 8px 16px;
|
|
3183
|
+
width: auto;
|
|
3184
|
+
margin: 4px 8px;
|
|
3185
|
+
}
|
|
3186
|
+
|
|
3187
|
+
.sidebar.mobile-open .nav-icon {
|
|
3188
|
+
width: 24px;
|
|
3189
|
+
height: 24px;
|
|
3190
|
+
position: static;
|
|
3191
|
+
}
|
|
3192
|
+
|
|
3193
|
+
.sidebar.mobile-open .sidebar-header {
|
|
3194
|
+
justify-content: flex-start;
|
|
3195
|
+
padding: 16px 20px;
|
|
3196
|
+
}
|
|
3197
|
+
|
|
3198
|
+
.sidebar.mobile-open .sidebar-footer {
|
|
3199
|
+
padding: 16px 20px;
|
|
3200
|
+
justify-content: flex-start;
|
|
3201
|
+
}
|
|
3202
|
+
|
|
3203
|
+
.sidebar.mobile-open .connection-status {
|
|
3204
|
+
justify-content: flex-start;
|
|
3205
|
+
}
|
|
3206
|
+
|
|
3207
|
+
/* App main content */
|
|
3208
|
+
.app-main {
|
|
3209
|
+
margin-left: 0;
|
|
3210
|
+
}
|
|
3211
|
+
|
|
3212
|
+
/* Mobile overlay - covers everything but stays behind sidebar */
|
|
3213
|
+
.mobile-overlay {
|
|
3214
|
+
display: none;
|
|
3215
|
+
position: fixed;
|
|
3216
|
+
top: 0;
|
|
3217
|
+
left: 0;
|
|
3218
|
+
width: 100%;
|
|
3219
|
+
height: 100%;
|
|
3220
|
+
background: rgba(0, 0, 0, 0.5);
|
|
3221
|
+
z-index: 1000;
|
|
3222
|
+
transition: opacity 0.3s ease;
|
|
3223
|
+
}
|
|
3224
|
+
|
|
3225
|
+
.mobile-overlay.active {
|
|
3226
|
+
display: block;
|
|
3227
|
+
opacity: 1;
|
|
3228
|
+
}
|
|
3229
|
+
|
|
3230
|
+
/* Mobile menu button - transforms when open */
|
|
3231
|
+
.mobile-menu-btn {
|
|
3232
|
+
display: flex !important;
|
|
3233
|
+
position: fixed;
|
|
3234
|
+
top: 20px;
|
|
3235
|
+
left: 20px;
|
|
3236
|
+
z-index: 1002;
|
|
3237
|
+
background: var(--bg-secondary);
|
|
3238
|
+
border: 1px solid var(--border-primary);
|
|
3239
|
+
border-radius: 8px;
|
|
3240
|
+
width: 44px;
|
|
3241
|
+
height: 44px;
|
|
3242
|
+
align-items: center;
|
|
3243
|
+
justify-content: center;
|
|
3244
|
+
cursor: pointer;
|
|
3245
|
+
transition: all 0.3s ease;
|
|
3246
|
+
color: var(--text-primary);
|
|
3247
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
3248
|
+
}
|
|
3249
|
+
|
|
3250
|
+
/* When menu is open, move button and change appearance */
|
|
3251
|
+
.mobile-menu-btn.menu-open {
|
|
3252
|
+
left: 300px;
|
|
3253
|
+
background: var(--text-accent);
|
|
3254
|
+
color: white;
|
|
3255
|
+
border-color: var(--text-accent);
|
|
3256
|
+
transform: rotate(180deg);
|
|
2943
3257
|
}
|
|
2944
3258
|
|
|
2945
|
-
.
|
|
2946
|
-
|
|
3259
|
+
.mobile-menu-btn:hover {
|
|
3260
|
+
background: var(--bg-tertiary);
|
|
3261
|
+
color: var(--text-accent);
|
|
3262
|
+
}
|
|
3263
|
+
|
|
3264
|
+
.mobile-menu-btn.menu-open:hover {
|
|
3265
|
+
background: #c85a3a;
|
|
3266
|
+
color: white;
|
|
3267
|
+
}
|
|
3268
|
+
|
|
3269
|
+
.mobile-menu-btn .menu-icon {
|
|
3270
|
+
font-size: 20px;
|
|
3271
|
+
transition: all 0.3s ease;
|
|
2947
3272
|
}
|
|
2948
3273
|
|
|
2949
3274
|
.nav-link {
|
|
@@ -2956,6 +3281,39 @@
|
|
|
2956
3281
|
.sidebar-footer {
|
|
2957
3282
|
padding: 12px 0;
|
|
2958
3283
|
}
|
|
3284
|
+
|
|
3285
|
+
.page-header {
|
|
3286
|
+
margin-left: 0;
|
|
3287
|
+
padding-left: 70px;
|
|
3288
|
+
}
|
|
3289
|
+
|
|
3290
|
+
.header-content {
|
|
3291
|
+
flex-direction: column;
|
|
3292
|
+
align-items: flex-start;
|
|
3293
|
+
gap: 16px;
|
|
3294
|
+
}
|
|
3295
|
+
|
|
3296
|
+
.header-right {
|
|
3297
|
+
align-self: stretch;
|
|
3298
|
+
justify-content: flex-end;
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3301
|
+
.page-title {
|
|
3302
|
+
font-size: 1.25rem;
|
|
3303
|
+
}
|
|
3304
|
+
|
|
3305
|
+
.page-subtitle {
|
|
3306
|
+
font-size: 0.8rem;
|
|
3307
|
+
}
|
|
3308
|
+
|
|
3309
|
+
.last-update-header {
|
|
3310
|
+
font-size: 0.7rem;
|
|
3311
|
+
}
|
|
3312
|
+
|
|
3313
|
+
.github-link {
|
|
3314
|
+
font-size: 0.8rem;
|
|
3315
|
+
padding: 4px 8px;
|
|
3316
|
+
}
|
|
2959
3317
|
}
|
|
2960
3318
|
|
|
2961
3319
|
/* Page Styles */
|
|
@@ -3068,6 +3426,14 @@
|
|
|
3068
3426
|
margin: 20px 0 30px 0;
|
|
3069
3427
|
}
|
|
3070
3428
|
|
|
3429
|
+
@media (max-width: 640px) {
|
|
3430
|
+
.metrics-cards-container {
|
|
3431
|
+
grid-template-columns: 1fr;
|
|
3432
|
+
gap: 16px;
|
|
3433
|
+
margin: 16px 0 20px 0;
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
|
|
3071
3437
|
.metric-card {
|
|
3072
3438
|
background: var(--bg-secondary);
|
|
3073
3439
|
border: 1px solid var(--border-primary);
|
|
@@ -3268,11 +3634,86 @@
|
|
|
3268
3634
|
color: var(--text-primary);
|
|
3269
3635
|
}
|
|
3270
3636
|
|
|
3271
|
-
.
|
|
3637
|
+
.agent-story-item {
|
|
3272
3638
|
display: flex;
|
|
3273
|
-
flex-
|
|
3274
|
-
|
|
3275
|
-
|
|
3639
|
+
flex-direction: column;
|
|
3640
|
+
align-items: center;
|
|
3641
|
+
gap: 6px;
|
|
3642
|
+
min-width: 60px;
|
|
3643
|
+
cursor: pointer;
|
|
3644
|
+
transition: transform 0.2s ease;
|
|
3645
|
+
}
|
|
3646
|
+
|
|
3647
|
+
.agent-story-item:hover {
|
|
3648
|
+
transform: scale(1.05);
|
|
3649
|
+
}
|
|
3650
|
+
|
|
3651
|
+
.agent-story-avatar {
|
|
3652
|
+
width: 56px;
|
|
3653
|
+
height: 56px;
|
|
3654
|
+
border-radius: 50%;
|
|
3655
|
+
background: linear-gradient(135deg, var(--text-accent), #f97316);
|
|
3656
|
+
display: flex;
|
|
3657
|
+
align-items: center;
|
|
3658
|
+
justify-content: center;
|
|
3659
|
+
font-size: 1.4rem;
|
|
3660
|
+
font-weight: 600;
|
|
3661
|
+
color: white;
|
|
3662
|
+
position: relative;
|
|
3663
|
+
border: 2px solid transparent;
|
|
3664
|
+
transition: all 0.2s ease;
|
|
3665
|
+
}
|
|
3666
|
+
|
|
3667
|
+
.agent-story-avatar.active {
|
|
3668
|
+
border-color: var(--text-accent);
|
|
3669
|
+
box-shadow: 0 0 0 2px rgba(213, 116, 85, 0.2);
|
|
3670
|
+
}
|
|
3671
|
+
|
|
3672
|
+
.agent-story-name {
|
|
3673
|
+
font-size: 0.75rem;
|
|
3674
|
+
color: var(--text-secondary);
|
|
3675
|
+
text-align: center;
|
|
3676
|
+
max-width: 60px;
|
|
3677
|
+
overflow: hidden;
|
|
3678
|
+
text-overflow: ellipsis;
|
|
3679
|
+
white-space: nowrap;
|
|
3680
|
+
}
|
|
3681
|
+
|
|
3682
|
+
.agent-story-status {
|
|
3683
|
+
position: absolute;
|
|
3684
|
+
bottom: 2px;
|
|
3685
|
+
right: 2px;
|
|
3686
|
+
width: 12px;
|
|
3687
|
+
height: 12px;
|
|
3688
|
+
border-radius: 50%;
|
|
3689
|
+
border: 2px solid var(--bg-primary);
|
|
3690
|
+
background: var(--text-success);
|
|
3691
|
+
}
|
|
3692
|
+
|
|
3693
|
+
/* Mobile responsive */
|
|
3694
|
+
@media (max-width: 768px) {
|
|
3695
|
+
.agents-stories-container {
|
|
3696
|
+
padding: 0 16px;
|
|
3697
|
+
}
|
|
3698
|
+
|
|
3699
|
+
.agents-stories {
|
|
3700
|
+
gap: 10px;
|
|
3701
|
+
}
|
|
3702
|
+
|
|
3703
|
+
.agent-story-item {
|
|
3704
|
+
min-width: 50px;
|
|
3705
|
+
}
|
|
3706
|
+
|
|
3707
|
+
.agent-story-avatar {
|
|
3708
|
+
width: 48px;
|
|
3709
|
+
height: 48px;
|
|
3710
|
+
font-size: 1.2rem;
|
|
3711
|
+
}
|
|
3712
|
+
|
|
3713
|
+
.agent-story-name {
|
|
3714
|
+
font-size: 0.7rem;
|
|
3715
|
+
max-width: 50px;
|
|
3716
|
+
}
|
|
3276
3717
|
}
|
|
3277
3718
|
|
|
3278
3719
|
.agent-item {
|
|
@@ -3358,9 +3799,9 @@
|
|
|
3358
3799
|
background: var(--bg-secondary);
|
|
3359
3800
|
border: 1px solid var(--border-primary);
|
|
3360
3801
|
border-radius: 8px;
|
|
3361
|
-
width:
|
|
3362
|
-
max-width:
|
|
3363
|
-
max-height:
|
|
3802
|
+
width: 95%;
|
|
3803
|
+
max-width: 900px;
|
|
3804
|
+
max-height: 85vh;
|
|
3364
3805
|
overflow: hidden;
|
|
3365
3806
|
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
3366
3807
|
}
|
|
@@ -3880,17 +4321,21 @@
|
|
|
3880
4321
|
/* Two Column Layout */
|
|
3881
4322
|
.conversations-layout {
|
|
3882
4323
|
display: grid;
|
|
3883
|
-
grid-template-columns:
|
|
3884
|
-
gap:
|
|
3885
|
-
height: calc(100vh -
|
|
4324
|
+
grid-template-columns: 380px 1fr;
|
|
4325
|
+
gap: 0;
|
|
4326
|
+
height: calc(100vh - 200px);
|
|
3886
4327
|
min-height: 600px;
|
|
4328
|
+
border-radius: 12px;
|
|
4329
|
+
overflow: hidden;
|
|
4330
|
+
border: 1px solid var(--border-primary);
|
|
4331
|
+
background: var(--bg-primary);
|
|
3887
4332
|
}
|
|
3888
4333
|
|
|
3889
|
-
/* Left Sidebar */
|
|
4334
|
+
/* Left Sidebar - Chat List Style */
|
|
3890
4335
|
.conversations-sidebar {
|
|
3891
4336
|
background: var(--bg-secondary);
|
|
3892
|
-
border: 1px solid var(--border-primary);
|
|
3893
|
-
border-radius:
|
|
4337
|
+
border-right: 1px solid var(--border-primary);
|
|
4338
|
+
border-radius: 0;
|
|
3894
4339
|
overflow: hidden;
|
|
3895
4340
|
display: flex;
|
|
3896
4341
|
flex-direction: column;
|
|
@@ -3900,16 +4345,16 @@
|
|
|
3900
4345
|
display: flex;
|
|
3901
4346
|
justify-content: space-between;
|
|
3902
4347
|
align-items: center;
|
|
3903
|
-
padding:
|
|
4348
|
+
padding: 20px 24px;
|
|
3904
4349
|
border-bottom: 1px solid var(--border-primary);
|
|
3905
|
-
background: var(--bg-
|
|
4350
|
+
background: var(--bg-secondary);
|
|
3906
4351
|
}
|
|
3907
4352
|
|
|
3908
4353
|
.sidebar-header h3 {
|
|
3909
4354
|
margin: 0;
|
|
3910
|
-
font-size:
|
|
4355
|
+
font-size: 1.25rem;
|
|
3911
4356
|
color: var(--text-primary);
|
|
3912
|
-
font-weight:
|
|
4357
|
+
font-weight: 700;
|
|
3913
4358
|
}
|
|
3914
4359
|
|
|
3915
4360
|
.conversation-count {
|
|
@@ -3924,7 +4369,7 @@
|
|
|
3924
4369
|
.conversations-list {
|
|
3925
4370
|
flex: 1;
|
|
3926
4371
|
overflow-y: auto;
|
|
3927
|
-
padding:
|
|
4372
|
+
padding: 0;
|
|
3928
4373
|
}
|
|
3929
4374
|
|
|
3930
4375
|
/* Load More Indicator */
|
|
@@ -3952,50 +4397,52 @@
|
|
|
3952
4397
|
font-weight: 500;
|
|
3953
4398
|
}
|
|
3954
4399
|
|
|
3955
|
-
/* Sidebar Conversation Items */
|
|
4400
|
+
/* Sidebar Conversation Items - Chat Thread Style */
|
|
3956
4401
|
.sidebar-conversation-item {
|
|
3957
|
-
padding:
|
|
3958
|
-
margin-bottom:
|
|
3959
|
-
border-radius:
|
|
4402
|
+
padding: 16px 24px;
|
|
4403
|
+
margin-bottom: 0;
|
|
4404
|
+
border-radius: 0;
|
|
3960
4405
|
cursor: pointer;
|
|
3961
4406
|
transition: all 0.2s ease;
|
|
3962
|
-
border:
|
|
4407
|
+
border: none;
|
|
4408
|
+
border-bottom: 1px solid rgba(48, 54, 61, 0.3);
|
|
4409
|
+
position: relative;
|
|
3963
4410
|
}
|
|
3964
4411
|
|
|
3965
4412
|
.sidebar-conversation-item:hover {
|
|
3966
|
-
background:
|
|
3967
|
-
border-color: var(--border-primary);
|
|
4413
|
+
background: rgba(33, 38, 45, 0.6);
|
|
3968
4414
|
}
|
|
3969
4415
|
|
|
3970
4416
|
.sidebar-conversation-item.selected {
|
|
3971
|
-
background:
|
|
3972
|
-
border-
|
|
3973
|
-
|
|
4417
|
+
background: rgba(213, 116, 85, 0.1);
|
|
4418
|
+
border-left: 3px solid var(--text-accent);
|
|
4419
|
+
padding-left: 21px;
|
|
3974
4420
|
}
|
|
3975
4421
|
|
|
3976
4422
|
.sidebar-conversation-header {
|
|
3977
4423
|
display: flex;
|
|
3978
4424
|
justify-content: space-between;
|
|
3979
|
-
align-items:
|
|
3980
|
-
margin-bottom:
|
|
4425
|
+
align-items: center;
|
|
4426
|
+
margin-bottom: 6px;
|
|
3981
4427
|
}
|
|
3982
4428
|
|
|
3983
4429
|
.sidebar-conversation-title {
|
|
3984
4430
|
display: flex;
|
|
3985
4431
|
align-items: center;
|
|
3986
|
-
gap:
|
|
4432
|
+
gap: 12px;
|
|
3987
4433
|
flex: 1;
|
|
3988
4434
|
min-width: 0;
|
|
3989
4435
|
}
|
|
3990
4436
|
|
|
3991
4437
|
.sidebar-conversation-name {
|
|
3992
|
-
font-size:
|
|
4438
|
+
font-size: 1rem;
|
|
3993
4439
|
font-weight: 600;
|
|
3994
4440
|
color: var(--text-primary);
|
|
3995
4441
|
margin: 0;
|
|
3996
4442
|
overflow: hidden;
|
|
3997
4443
|
text-overflow: ellipsis;
|
|
3998
4444
|
white-space: nowrap;
|
|
4445
|
+
flex: 1;
|
|
3999
4446
|
}
|
|
4000
4447
|
|
|
4001
4448
|
.sidebar-conversation-badge {
|
|
@@ -4029,26 +4476,76 @@
|
|
|
4029
4476
|
}
|
|
4030
4477
|
|
|
4031
4478
|
.sidebar-conversation-preview {
|
|
4032
|
-
margin-top:
|
|
4479
|
+
margin-top: 4px;
|
|
4480
|
+
display: flex;
|
|
4481
|
+
align-items: center;
|
|
4482
|
+
justify-content: space-between;
|
|
4483
|
+
gap: 8px;
|
|
4033
4484
|
}
|
|
4034
4485
|
|
|
4035
4486
|
.sidebar-preview-text {
|
|
4036
|
-
font-size: 0.
|
|
4487
|
+
font-size: 0.85rem;
|
|
4037
4488
|
color: var(--text-secondary);
|
|
4038
4489
|
line-height: 1.3;
|
|
4039
4490
|
margin: 0;
|
|
4040
4491
|
overflow: hidden;
|
|
4041
|
-
|
|
4042
|
-
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4492
|
+
text-overflow: ellipsis;
|
|
4493
|
+
white-space: nowrap;
|
|
4494
|
+
flex: 1;
|
|
4495
|
+
}
|
|
4496
|
+
|
|
4497
|
+
.sidebar-preview-time {
|
|
4498
|
+
font-size: 0.75rem;
|
|
4499
|
+
color: var(--text-secondary);
|
|
4500
|
+
white-space: nowrap;
|
|
4501
|
+
opacity: 0.8;
|
|
4502
|
+
}
|
|
4503
|
+
|
|
4504
|
+
.chat-avatar {
|
|
4505
|
+
width: 40px;
|
|
4506
|
+
height: 40px;
|
|
4507
|
+
border-radius: 20px;
|
|
4508
|
+
background: linear-gradient(135deg, var(--text-accent), #f97316);
|
|
4509
|
+
display: flex;
|
|
4510
|
+
align-items: center;
|
|
4511
|
+
justify-content: center;
|
|
4512
|
+
font-size: 1.1rem;
|
|
4513
|
+
font-weight: 600;
|
|
4514
|
+
color: white;
|
|
4515
|
+
flex-shrink: 0;
|
|
4516
|
+
}
|
|
4517
|
+
|
|
4518
|
+
.unread-indicator {
|
|
4519
|
+
width: 20px;
|
|
4520
|
+
height: 20px;
|
|
4521
|
+
background: var(--text-accent);
|
|
4522
|
+
border-radius: 10px;
|
|
4523
|
+
display: flex;
|
|
4524
|
+
align-items: center;
|
|
4525
|
+
justify-content: center;
|
|
4526
|
+
font-size: 0.75rem;
|
|
4527
|
+
font-weight: 600;
|
|
4528
|
+
color: white;
|
|
4529
|
+
margin-left: 8px;
|
|
4530
|
+
}
|
|
4531
|
+
|
|
4532
|
+
.sidebar-conversation-info {
|
|
4533
|
+
flex: 1;
|
|
4534
|
+
min-width: 0;
|
|
4535
|
+
}
|
|
4536
|
+
|
|
4537
|
+
.sidebar-conversation-time {
|
|
4538
|
+
display: flex;
|
|
4539
|
+
align-items: center;
|
|
4540
|
+
justify-content: space-between;
|
|
4541
|
+
margin-top: 2px;
|
|
4045
4542
|
}
|
|
4046
4543
|
|
|
4047
|
-
/* Right Panel */
|
|
4544
|
+
/* Right Panel - Chat Messages Style */
|
|
4048
4545
|
.messages-panel {
|
|
4049
|
-
background: var(--bg-
|
|
4050
|
-
border:
|
|
4051
|
-
border-radius:
|
|
4546
|
+
background: var(--bg-primary);
|
|
4547
|
+
border: none;
|
|
4548
|
+
border-radius: 0;
|
|
4052
4549
|
overflow: hidden;
|
|
4053
4550
|
display: flex;
|
|
4054
4551
|
flex-direction: column;
|
|
@@ -4058,23 +4555,19 @@
|
|
|
4058
4555
|
display: flex;
|
|
4059
4556
|
justify-content: space-between;
|
|
4060
4557
|
align-items: center;
|
|
4061
|
-
padding: 16px
|
|
4558
|
+
padding: 16px 24px;
|
|
4062
4559
|
border-bottom: 1px solid var(--border-primary);
|
|
4063
|
-
background: var(--bg-
|
|
4560
|
+
background: var(--bg-secondary);
|
|
4561
|
+
min-height: 72px;
|
|
4064
4562
|
}
|
|
4065
4563
|
|
|
4066
4564
|
.selected-conversation-info h3 {
|
|
4067
4565
|
margin: 0 0 4px 0;
|
|
4068
|
-
font-size: 1.
|
|
4566
|
+
font-size: 1.2rem;
|
|
4069
4567
|
color: var(--text-primary);
|
|
4070
|
-
font-weight:
|
|
4568
|
+
font-weight: 700;
|
|
4071
4569
|
}
|
|
4072
4570
|
|
|
4073
|
-
.selected-conversation-meta {
|
|
4074
|
-
display: flex;
|
|
4075
|
-
flex-wrap: wrap;
|
|
4076
|
-
gap: 16px;
|
|
4077
|
-
}
|
|
4078
4571
|
|
|
4079
4572
|
.messages-actions {
|
|
4080
4573
|
display: flex;
|
|
@@ -4086,6 +4579,77 @@
|
|
|
4086
4579
|
overflow-y: auto;
|
|
4087
4580
|
padding: 20px;
|
|
4088
4581
|
}
|
|
4582
|
+
|
|
4583
|
+
/* Message Input Area */
|
|
4584
|
+
.message-input-area {
|
|
4585
|
+
border-top: 1px solid var(--border-primary);
|
|
4586
|
+
padding: 12px 20px;
|
|
4587
|
+
background: var(--bg-secondary);
|
|
4588
|
+
}
|
|
4589
|
+
|
|
4590
|
+
.input-container {
|
|
4591
|
+
display: flex;
|
|
4592
|
+
flex-direction: column;
|
|
4593
|
+
}
|
|
4594
|
+
|
|
4595
|
+
.input-row {
|
|
4596
|
+
display: flex;
|
|
4597
|
+
gap: 8px;
|
|
4598
|
+
align-items: flex-end;
|
|
4599
|
+
}
|
|
4600
|
+
|
|
4601
|
+
.message-input {
|
|
4602
|
+
flex: 1;
|
|
4603
|
+
min-height: 36px;
|
|
4604
|
+
max-height: 120px;
|
|
4605
|
+
padding: 8px 12px;
|
|
4606
|
+
border: 1px solid var(--border-primary);
|
|
4607
|
+
border-radius: 18px;
|
|
4608
|
+
background: var(--bg-primary);
|
|
4609
|
+
color: var(--text-primary);
|
|
4610
|
+
font-family: inherit;
|
|
4611
|
+
font-size: 0.9rem;
|
|
4612
|
+
line-height: 1.4;
|
|
4613
|
+
resize: none;
|
|
4614
|
+
transition: all 0.2s ease;
|
|
4615
|
+
}
|
|
4616
|
+
|
|
4617
|
+
.message-input:focus {
|
|
4618
|
+
outline: none;
|
|
4619
|
+
border-color: var(--text-accent);
|
|
4620
|
+
background: var(--bg-primary);
|
|
4621
|
+
}
|
|
4622
|
+
|
|
4623
|
+
.message-input::placeholder {
|
|
4624
|
+
color: var(--text-secondary);
|
|
4625
|
+
}
|
|
4626
|
+
|
|
4627
|
+
.send-btn {
|
|
4628
|
+
background: var(--text-accent);
|
|
4629
|
+
color: white;
|
|
4630
|
+
border: none;
|
|
4631
|
+
border-radius: 50%;
|
|
4632
|
+
width: 36px;
|
|
4633
|
+
height: 36px;
|
|
4634
|
+
font-size: 16px;
|
|
4635
|
+
cursor: pointer;
|
|
4636
|
+
display: flex;
|
|
4637
|
+
align-items: center;
|
|
4638
|
+
justify-content: center;
|
|
4639
|
+
transition: all 0.2s ease;
|
|
4640
|
+
flex-shrink: 0;
|
|
4641
|
+
}
|
|
4642
|
+
|
|
4643
|
+
.send-btn:hover:not(:disabled) {
|
|
4644
|
+
background: #c85a3a;
|
|
4645
|
+
transform: scale(1.05);
|
|
4646
|
+
}
|
|
4647
|
+
|
|
4648
|
+
.send-btn:disabled {
|
|
4649
|
+
background: var(--text-secondary);
|
|
4650
|
+
cursor: not-allowed;
|
|
4651
|
+
opacity: 0.6;
|
|
4652
|
+
}
|
|
4089
4653
|
|
|
4090
4654
|
/* No Conversation Selected State */
|
|
4091
4655
|
.no-conversation-selected {
|
|
@@ -4096,23 +4660,27 @@
|
|
|
4096
4660
|
height: 100%;
|
|
4097
4661
|
text-align: center;
|
|
4098
4662
|
color: var(--text-secondary);
|
|
4663
|
+
padding: 40px 20px;
|
|
4099
4664
|
}
|
|
4100
4665
|
|
|
4101
4666
|
.no-selection-icon {
|
|
4102
|
-
font-size:
|
|
4103
|
-
margin-bottom:
|
|
4104
|
-
opacity: 0.
|
|
4667
|
+
font-size: 4rem;
|
|
4668
|
+
margin-bottom: 20px;
|
|
4669
|
+
opacity: 0.6;
|
|
4105
4670
|
}
|
|
4106
4671
|
|
|
4107
4672
|
.no-conversation-selected h4 {
|
|
4108
|
-
margin: 0 0
|
|
4109
|
-
font-size: 1.
|
|
4673
|
+
margin: 0 0 12px 0;
|
|
4674
|
+
font-size: 1.3rem;
|
|
4110
4675
|
color: var(--text-primary);
|
|
4676
|
+
font-weight: 600;
|
|
4111
4677
|
}
|
|
4112
4678
|
|
|
4113
4679
|
.no-conversation-selected p {
|
|
4114
4680
|
margin: 0;
|
|
4115
|
-
font-size:
|
|
4681
|
+
font-size: 1rem;
|
|
4682
|
+
opacity: 0.8;
|
|
4683
|
+
line-height: 1.5;
|
|
4116
4684
|
}
|
|
4117
4685
|
|
|
4118
4686
|
/* No Messages Found State */
|
|
@@ -4151,20 +4719,90 @@
|
|
|
4151
4719
|
}
|
|
4152
4720
|
|
|
4153
4721
|
.message {
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4722
|
+
margin-bottom: 12px;
|
|
4723
|
+
display: flex;
|
|
4724
|
+
width: 100%;
|
|
4725
|
+
}
|
|
4726
|
+
|
|
4727
|
+
.message-bubble {
|
|
4728
|
+
max-width: 60%;
|
|
4729
|
+
padding: 10px 14px;
|
|
4730
|
+
border-radius: 16px;
|
|
4731
|
+
position: relative;
|
|
4732
|
+
word-wrap: break-word;
|
|
4733
|
+
font-size: 0.9rem;
|
|
4734
|
+
line-height: 1.4;
|
|
4158
4735
|
}
|
|
4159
4736
|
|
|
4160
4737
|
.message-user {
|
|
4161
|
-
|
|
4162
|
-
|
|
4738
|
+
justify-content: flex-end;
|
|
4739
|
+
margin-bottom: 8px;
|
|
4740
|
+
}
|
|
4741
|
+
|
|
4742
|
+
.message-user .message-bubble {
|
|
4743
|
+
background: #2fa95c;
|
|
4744
|
+
color: white;
|
|
4745
|
+
border-bottom-right-radius: 4px;
|
|
4746
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
4163
4747
|
}
|
|
4164
4748
|
|
|
4165
4749
|
.message-assistant {
|
|
4166
|
-
|
|
4167
|
-
|
|
4750
|
+
justify-content: flex-start;
|
|
4751
|
+
margin-bottom: 8px;
|
|
4752
|
+
}
|
|
4753
|
+
|
|
4754
|
+
.message-assistant .message-bubble {
|
|
4755
|
+
background: var(--bg-secondary);
|
|
4756
|
+
color: var(--text-primary);
|
|
4757
|
+
border: 1px solid var(--border-primary);
|
|
4758
|
+
border-bottom-left-radius: 4px;
|
|
4759
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
4760
|
+
}
|
|
4761
|
+
|
|
4762
|
+
.message-content {
|
|
4763
|
+
margin-bottom: 8px;
|
|
4764
|
+
line-height: 1.4;
|
|
4765
|
+
}
|
|
4766
|
+
|
|
4767
|
+
.message-meta {
|
|
4768
|
+
display: flex;
|
|
4769
|
+
align-items: center;
|
|
4770
|
+
gap: 8px;
|
|
4771
|
+
font-size: 0.75rem;
|
|
4772
|
+
opacity: 0.7;
|
|
4773
|
+
margin-top: 4px;
|
|
4774
|
+
}
|
|
4775
|
+
|
|
4776
|
+
.message-user .message-meta {
|
|
4777
|
+
justify-content: flex-end;
|
|
4778
|
+
color: rgba(255, 255, 255, 0.7);
|
|
4779
|
+
}
|
|
4780
|
+
|
|
4781
|
+
.message-assistant .message-meta {
|
|
4782
|
+
justify-content: flex-start;
|
|
4783
|
+
color: var(--text-secondary);
|
|
4784
|
+
}
|
|
4785
|
+
|
|
4786
|
+
.message-time {
|
|
4787
|
+
font-size: 0.7rem;
|
|
4788
|
+
}
|
|
4789
|
+
|
|
4790
|
+
.tool-indicator, .token-indicator {
|
|
4791
|
+
font-size: 0.6rem;
|
|
4792
|
+
padding: 1px 3px;
|
|
4793
|
+
background: rgba(0, 0, 0, 0.15);
|
|
4794
|
+
border-radius: 3px;
|
|
4795
|
+
opacity: 0.8;
|
|
4796
|
+
}
|
|
4797
|
+
|
|
4798
|
+
.message-user .tool-indicator,
|
|
4799
|
+
.message-user .token-indicator {
|
|
4800
|
+
background: rgba(255, 255, 255, 0.2);
|
|
4801
|
+
}
|
|
4802
|
+
|
|
4803
|
+
.messages-list {
|
|
4804
|
+
padding: 20px;
|
|
4805
|
+
max-width: 100%;
|
|
4168
4806
|
}
|
|
4169
4807
|
|
|
4170
4808
|
.message-header {
|
|
@@ -4293,23 +4931,46 @@
|
|
|
4293
4931
|
/* Responsive Design */
|
|
4294
4932
|
@media (max-width: 1024px) {
|
|
4295
4933
|
.conversations-layout {
|
|
4296
|
-
grid-template-columns:
|
|
4934
|
+
grid-template-columns: 320px 1fr;
|
|
4297
4935
|
}
|
|
4298
4936
|
}
|
|
4299
4937
|
|
|
4300
4938
|
@media (max-width: 768px) {
|
|
4301
4939
|
.conversations-layout {
|
|
4302
4940
|
grid-template-columns: 1fr;
|
|
4303
|
-
grid-template-rows:
|
|
4941
|
+
grid-template-rows: 1fr;
|
|
4942
|
+
gap: 0;
|
|
4943
|
+
height: calc(100vh - 120px);
|
|
4304
4944
|
}
|
|
4305
4945
|
|
|
4306
4946
|
.conversations-sidebar {
|
|
4307
|
-
|
|
4947
|
+
display: none; /* Hide on mobile, will be in hamburger menu */
|
|
4308
4948
|
}
|
|
4309
4949
|
|
|
4310
|
-
.
|
|
4311
|
-
|
|
4312
|
-
|
|
4950
|
+
.messages-panel {
|
|
4951
|
+
border: none;
|
|
4952
|
+
border-radius: 0;
|
|
4953
|
+
}
|
|
4954
|
+
|
|
4955
|
+
.chat-avatar {
|
|
4956
|
+
width: 36px;
|
|
4957
|
+
height: 36px;
|
|
4958
|
+
font-size: 1rem;
|
|
4959
|
+
}
|
|
4960
|
+
|
|
4961
|
+
.message-bubble {
|
|
4962
|
+
max-width: 80%;
|
|
4963
|
+
padding: 8px 12px;
|
|
4964
|
+
font-size: 0.85rem;
|
|
4965
|
+
}
|
|
4966
|
+
|
|
4967
|
+
.message-input-area {
|
|
4968
|
+
padding: 12px 16px;
|
|
4969
|
+
}
|
|
4970
|
+
|
|
4971
|
+
.messages-header {
|
|
4972
|
+
padding: 12px 20px;
|
|
4973
|
+
min-height: 60px;
|
|
4313
4974
|
}
|
|
4314
4975
|
}
|
|
4315
4976
|
|
|
@@ -5481,9 +6142,14 @@
|
|
|
5481
6142
|
}
|
|
5482
6143
|
|
|
5483
6144
|
/* Edit Tool Modal Specific Styles */
|
|
6145
|
+
.agent-modal.edit-tool-modal .agent-modal-content {
|
|
6146
|
+
background: #0d1117;
|
|
6147
|
+
border: 1px solid #21262d;
|
|
6148
|
+
}
|
|
6149
|
+
|
|
5484
6150
|
.edit-changes-section {
|
|
5485
6151
|
margin-bottom: 24px;
|
|
5486
|
-
padding:
|
|
6152
|
+
padding: 20px;
|
|
5487
6153
|
background: rgba(33, 38, 45, 0.5);
|
|
5488
6154
|
border-radius: 8px;
|
|
5489
6155
|
border: 1px solid var(--border-color);
|
|
@@ -6237,6 +6903,39 @@
|
|
|
6237
6903
|
}
|
|
6238
6904
|
|
|
6239
6905
|
/* TodoWrite Modal Styles */
|
|
6906
|
+
.agent-modal.todo-tool-modal {
|
|
6907
|
+
max-width: 1200px;
|
|
6908
|
+
width: 98%;
|
|
6909
|
+
}
|
|
6910
|
+
|
|
6911
|
+
.agent-modal.edit-tool-modal {
|
|
6912
|
+
max-width: 1200px;
|
|
6913
|
+
width: 98%;
|
|
6914
|
+
}
|
|
6915
|
+
|
|
6916
|
+
/* Responsive adjustments for todo and edit tool modals */
|
|
6917
|
+
@media (max-width: 768px) {
|
|
6918
|
+
.agent-modal.todo-tool-modal,
|
|
6919
|
+
.agent-modal.edit-tool-modal {
|
|
6920
|
+
width: 95%;
|
|
6921
|
+
max-width: none;
|
|
6922
|
+
max-height: 90vh;
|
|
6923
|
+
}
|
|
6924
|
+
|
|
6925
|
+
.agent-modal.todo-tool-modal .agent-modal-content,
|
|
6926
|
+
.agent-modal.edit-tool-modal .agent-modal-content {
|
|
6927
|
+
font-size: 0.9rem;
|
|
6928
|
+
}
|
|
6929
|
+
}
|
|
6930
|
+
|
|
6931
|
+
@media (max-width: 480px) {
|
|
6932
|
+
.agent-modal.todo-tool-modal,
|
|
6933
|
+
.agent-modal.edit-tool-modal {
|
|
6934
|
+
width: 98%;
|
|
6935
|
+
margin: 10px;
|
|
6936
|
+
}
|
|
6937
|
+
}
|
|
6938
|
+
|
|
6240
6939
|
.agent-modal.todo-tool-modal .agent-modal-content {
|
|
6241
6940
|
background: #0d1117;
|
|
6242
6941
|
border: 1px solid #21262d;
|
|
@@ -6244,12 +6943,66 @@
|
|
|
6244
6943
|
|
|
6245
6944
|
.todo-summary-section, .todo-status-section, .todo-priority-section, .todo-items-section {
|
|
6246
6945
|
margin-bottom: 24px;
|
|
6247
|
-
padding:
|
|
6946
|
+
padding: 20px;
|
|
6248
6947
|
background: rgba(33, 38, 45, 0.5);
|
|
6249
6948
|
border-radius: 8px;
|
|
6250
6949
|
border: 1px solid var(--border-color);
|
|
6251
6950
|
}
|
|
6252
6951
|
|
|
6952
|
+
/* JSON content styling in todo tool modal */
|
|
6953
|
+
.agent-modal.todo-tool-modal pre {
|
|
6954
|
+
background: #0a0e13;
|
|
6955
|
+
border: 1px solid #30363d;
|
|
6956
|
+
border-radius: 6px;
|
|
6957
|
+
padding: 16px;
|
|
6958
|
+
overflow-x: auto;
|
|
6959
|
+
white-space: pre-wrap;
|
|
6960
|
+
word-wrap: break-word;
|
|
6961
|
+
font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
|
6962
|
+
font-size: 0.9rem;
|
|
6963
|
+
line-height: 1.4;
|
|
6964
|
+
max-height: 400px;
|
|
6965
|
+
overflow-y: auto;
|
|
6966
|
+
}
|
|
6967
|
+
|
|
6968
|
+
.agent-modal.todo-tool-modal code,
|
|
6969
|
+
.agent-modal.edit-tool-modal code {
|
|
6970
|
+
background: rgba(110, 118, 129, 0.1);
|
|
6971
|
+
padding: 2px 4px;
|
|
6972
|
+
border-radius: 3px;
|
|
6973
|
+
font-family: inherit;
|
|
6974
|
+
}
|
|
6975
|
+
|
|
6976
|
+
/* Code content styling in edit tool modal */
|
|
6977
|
+
.agent-modal.edit-tool-modal pre {
|
|
6978
|
+
background: #0a0e13;
|
|
6979
|
+
border: 1px solid #30363d;
|
|
6980
|
+
border-radius: 6px;
|
|
6981
|
+
padding: 16px;
|
|
6982
|
+
overflow-x: auto;
|
|
6983
|
+
white-space: pre-wrap;
|
|
6984
|
+
word-wrap: break-word;
|
|
6985
|
+
font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
|
6986
|
+
font-size: 0.9rem;
|
|
6987
|
+
line-height: 1.4;
|
|
6988
|
+
max-height: 600px;
|
|
6989
|
+
overflow-y: auto;
|
|
6990
|
+
}
|
|
6991
|
+
|
|
6992
|
+
.edit-code-block {
|
|
6993
|
+
background: #0a0e13;
|
|
6994
|
+
border: 1px solid #30363d;
|
|
6995
|
+
border-radius: 6px;
|
|
6996
|
+
padding: 16px;
|
|
6997
|
+
margin: 12px 0;
|
|
6998
|
+
overflow-x: auto;
|
|
6999
|
+
font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', 'Fira Mono', 'Roboto Mono', monospace;
|
|
7000
|
+
font-size: 0.9rem;
|
|
7001
|
+
line-height: 1.4;
|
|
7002
|
+
white-space: pre-wrap;
|
|
7003
|
+
word-wrap: break-word;
|
|
7004
|
+
}
|
|
7005
|
+
|
|
6253
7006
|
.todo-summary-section h4, .todo-status-section h4, .todo-priority-section h4, .todo-items-section h4 {
|
|
6254
7007
|
color: #d57455;
|
|
6255
7008
|
font-size: 1.1rem;
|
|
@@ -7100,6 +7853,14 @@
|
|
|
7100
7853
|
</style>
|
|
7101
7854
|
</head>
|
|
7102
7855
|
<body>
|
|
7856
|
+
<!-- Mobile Menu Button -->
|
|
7857
|
+
<button class="mobile-menu-btn" id="mobileMenuBtn">
|
|
7858
|
+
<span class="menu-icon" id="menuIcon">☰</span>
|
|
7859
|
+
</button>
|
|
7860
|
+
|
|
7861
|
+
<!-- Mobile Overlay -->
|
|
7862
|
+
<div class="mobile-overlay" id="mobileOverlay"></div>
|
|
7863
|
+
|
|
7103
7864
|
<div id="app">
|
|
7104
7865
|
<!-- App will be initialized here -->
|
|
7105
7866
|
</div>
|
|
@@ -7118,6 +7879,94 @@
|
|
|
7118
7879
|
</div>
|
|
7119
7880
|
|
|
7120
7881
|
<script>
|
|
7882
|
+
// Mobile Menu Functionality
|
|
7883
|
+
function initMobileMenu() {
|
|
7884
|
+
console.log('🔧 Initializing mobile menu...');
|
|
7885
|
+
|
|
7886
|
+
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
|
|
7887
|
+
const mobileOverlay = document.getElementById('mobileOverlay');
|
|
7888
|
+
const menuIcon = document.getElementById('menuIcon');
|
|
7889
|
+
|
|
7890
|
+
console.log('Mobile menu elements:', {
|
|
7891
|
+
btn: !!mobileMenuBtn,
|
|
7892
|
+
overlay: !!mobileOverlay
|
|
7893
|
+
});
|
|
7894
|
+
|
|
7895
|
+
let isMobileMenuOpen = false;
|
|
7896
|
+
|
|
7897
|
+
function toggleMobileMenu() {
|
|
7898
|
+
console.log('📱 Toggling mobile menu:', !isMobileMenuOpen);
|
|
7899
|
+
|
|
7900
|
+
// Wait for sidebar to be available
|
|
7901
|
+
const sidebar = document.querySelector('.sidebar');
|
|
7902
|
+
if (!sidebar) {
|
|
7903
|
+
console.warn('Sidebar not found yet, retrying...');
|
|
7904
|
+
setTimeout(toggleMobileMenu, 100);
|
|
7905
|
+
return;
|
|
7906
|
+
}
|
|
7907
|
+
|
|
7908
|
+
isMobileMenuOpen = !isMobileMenuOpen;
|
|
7909
|
+
|
|
7910
|
+
if (isMobileMenuOpen) {
|
|
7911
|
+
sidebar.classList.add('mobile-open');
|
|
7912
|
+
if (mobileOverlay) mobileOverlay.classList.add('active');
|
|
7913
|
+
if (mobileMenuBtn) mobileMenuBtn.classList.add('menu-open');
|
|
7914
|
+
if (menuIcon) menuIcon.textContent = '×';
|
|
7915
|
+
console.log('✅ Mobile menu opened');
|
|
7916
|
+
} else {
|
|
7917
|
+
sidebar.classList.remove('mobile-open');
|
|
7918
|
+
if (mobileOverlay) mobileOverlay.classList.remove('active');
|
|
7919
|
+
if (mobileMenuBtn) mobileMenuBtn.classList.remove('menu-open');
|
|
7920
|
+
if (menuIcon) menuIcon.textContent = '☰';
|
|
7921
|
+
console.log('❌ Mobile menu closed');
|
|
7922
|
+
}
|
|
7923
|
+
}
|
|
7924
|
+
|
|
7925
|
+
// Bind mobile menu button
|
|
7926
|
+
if (mobileMenuBtn) {
|
|
7927
|
+
console.log('🔗 Binding mobile menu button');
|
|
7928
|
+
mobileMenuBtn.addEventListener('click', (e) => {
|
|
7929
|
+
e.preventDefault();
|
|
7930
|
+
e.stopPropagation();
|
|
7931
|
+
toggleMobileMenu();
|
|
7932
|
+
});
|
|
7933
|
+
} else {
|
|
7934
|
+
console.warn('❌ Mobile menu button not found');
|
|
7935
|
+
}
|
|
7936
|
+
|
|
7937
|
+
// Bind overlay click
|
|
7938
|
+
if (mobileOverlay) {
|
|
7939
|
+
mobileOverlay.addEventListener('click', () => {
|
|
7940
|
+
if (isMobileMenuOpen) {
|
|
7941
|
+
toggleMobileMenu();
|
|
7942
|
+
}
|
|
7943
|
+
});
|
|
7944
|
+
}
|
|
7945
|
+
|
|
7946
|
+
// Close mobile menu when clicking on sidebar links
|
|
7947
|
+
document.addEventListener('click', (e) => {
|
|
7948
|
+
if (e.target.closest('.nav-link') && window.innerWidth <= 768 && isMobileMenuOpen) {
|
|
7949
|
+
setTimeout(() => toggleMobileMenu(), 100);
|
|
7950
|
+
}
|
|
7951
|
+
});
|
|
7952
|
+
|
|
7953
|
+
// Handle window resize
|
|
7954
|
+
window.addEventListener('resize', () => {
|
|
7955
|
+
if (window.innerWidth > 768 && isMobileMenuOpen) {
|
|
7956
|
+
const sidebar = document.querySelector('.sidebar');
|
|
7957
|
+
if (sidebar) {
|
|
7958
|
+
sidebar.classList.remove('mobile-open');
|
|
7959
|
+
if (mobileOverlay) mobileOverlay.classList.remove('active');
|
|
7960
|
+
if (mobileMenuBtn) mobileMenuBtn.classList.remove('menu-open');
|
|
7961
|
+
if (menuIcon) menuIcon.textContent = '☰';
|
|
7962
|
+
isMobileMenuOpen = false;
|
|
7963
|
+
}
|
|
7964
|
+
}
|
|
7965
|
+
});
|
|
7966
|
+
|
|
7967
|
+
console.log('✅ Mobile menu initialized');
|
|
7968
|
+
}
|
|
7969
|
+
|
|
7121
7970
|
// Initialize the App.js based application (with Sidebar layout)
|
|
7122
7971
|
document.addEventListener('DOMContentLoaded', async function() {
|
|
7123
7972
|
const appContainer = document.getElementById('app');
|
|
@@ -7156,7 +8005,12 @@
|
|
|
7156
8005
|
console.log('🔧 Initializing main App component with Sidebar...');
|
|
7157
8006
|
const app = new App(appContainer, services);
|
|
7158
8007
|
|
|
7159
|
-
// 7.
|
|
8008
|
+
// 7. Initialize mobile menu functionality after a delay
|
|
8009
|
+
setTimeout(() => {
|
|
8010
|
+
initMobileMenu();
|
|
8011
|
+
}, 500);
|
|
8012
|
+
|
|
8013
|
+
// 8. Store app instance globally for debugging
|
|
7160
8014
|
window.claudeAnalyticsApp = app;
|
|
7161
8015
|
|
|
7162
8016
|
console.log('🎉 Claude Analytics App with Sidebar initialized successfully!');
|