Files
SuperCharged-Claude-Code-Up…/public/claude-ide/chat-enhanced.css
uroma a0fd70418f Fix multiple critical bugs: continueSessionInChat, projects link, mode buttons
Bug fixes:
- Add missing showLoadingOverlay/hideLoadingOverlay functions to ide.js
  (previously only existed in sessions-landing.js, causing continueSessionInChat to fail)
- Add loading overlay CSS styles to main style.css
- Fix Projects button URL: /projects -> /claude/ide?view=projects
- Add ?view= URL parameter handling in ide.js initialization
- Add missing Native mode button to chat view (now has 3 modes: Chat, Native, Terminal)

These fixes resolve:
1. "Continue in Chat" button not working in sessions view
2. Projects button in landing page nav taking to wrong URL
3. Missing "Native" mode button (user referred to as "Full Stack mode")
4. Loading overlay not displaying in IDE

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-21 07:03:04 +00:00

572 lines
10 KiB
CSS

/**
* Enhanced Chat Styles - Similar to chat.z.ai
* Smooth animations, better input, modern design
*/
/* ============================================
Chat Input Enhancements
============================================ */
.chat-input-wrapper {
transition: all 0.3s ease;
border: 2px solid #333;
}
.chat-input-wrapper.input-focused {
border-color: #4a9eff;
box-shadow: 0 0 0 3px rgba(74, 158, 255, 0.1);
}
#chat-input {
transition: height 0.2s ease;
font-size: 15px;
line-height: 1.6;
}
#chat-input:focus {
outline: none;
}
/* ============================================
Chat History Sidebar
============================================ */
.chat-history-list {
padding: 12px;
}
.chat-history-item {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
border-radius: 8px;
cursor: pointer;
transition: all 0.2s ease;
margin-bottom: 8px;
background: #252525;
border: 1px solid transparent;
}
.chat-history-item:hover {
background: #2a2a2a;
border-color: #444;
transform: translateX(2px);
}
.chat-history-item.active {
background: #1a3a5a;
border-color: #4a9eff;
}
.chat-history-item.historical {
opacity: 0.8;
}
.chat-history-icon {
font-size: 20px;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: #1a1a1a;
border-radius: 8px;
}
.chat-history-content {
flex: 1;
min-width: 0;
}
.chat-history-title {
font-size: 14px;
font-weight: 500;
color: #e0e0e0;
margin-bottom: 4px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.chat-history-meta {
display: flex;
gap: 8px;
font-size: 12px;
color: #888;
}
.chat-history-status {
padding: 2px 6px;
border-radius: 4px;
background: #1a1a1a;
}
.chat-history-status.active {
color: #51cf66;
background: rgba(81, 207, 102, 0.1);
}
.chat-history-status.historical {
color: #ffa94d;
background: rgba(255, 169, 77, 0.1);
}
.resume-badge {
font-size: 11px;
padding: 4px 8px;
background: #4a9eff;
color: white;
border-radius: 4px;
font-weight: 500;
}
.chat-history-empty {
text-align: center;
padding: 40px 20px;
color: #888;
font-size: 14px;
}
/* ============================================
Enhanced Message Animations
============================================ */
.chat-message {
animation: messageSlideIn 0.3s ease;
}
@keyframes messageSlideIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.message-appear {
animation: messageAppear 0.4s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes messageAppear {
from {
opacity: 0;
transform: scale(0.95) translateY(10px);
}
to {
opacity: 1;
transform: scale(1) translateY(0);
}
}
.message-avatar {
animation: avatarPop 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
@keyframes avatarPop {
0% {
transform: scale(0);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
/* ============================================
Code Operation Styling
============================================ */
.code-operation {
background: #1a1a1a;
border: 1px solid #333;
border-radius: 8px;
margin: 12px 0;
overflow: hidden;
}
.operation-header {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
background: #252525;
border-bottom: 1px solid #333;
}
.operation-icon {
font-size: 16px;
}
.operation-label {
font-size: 13px;
font-weight: 500;
color: #e0e0e0;
}
.operation-code {
margin: 0;
padding: 14px;
background: #0d0d0d;
overflow-x: auto;
}
.operation-code code {
font-family: 'Fira Code', 'Courier New', monospace;
font-size: 13px;
line-height: 1.6;
color: #e0e0e0;
}
/* ============================================
Quick Actions
============================================ */
.quick-actions {
padding: 20px;
background: #1a1a1a;
border-radius: 12px;
margin: 20px 0;
animation: quickActionsSlide 0.4s ease;
}
@keyframes quickActionsSlide {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.quick-actions-title {
font-size: 14px;
font-weight: 600;
color: #888;
margin-bottom: 16px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.quick-actions-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 12px;
}
.quick-action-btn {
display: flex;
align-items: center;
gap: 12px;
padding: 14px 16px;
background: #252525;
border: 1px solid #333;
border-radius: 8px;
color: #e0e0e0;
cursor: pointer;
transition: all 0.2s ease;
font-size: 14px;
}
.quick-action-btn:hover {
background: #2a2a2a;
border-color: #4a9eff;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(74, 158, 255, 0.2);
}
.quick-action-btn:active {
transform: translateY(0);
}
.action-icon {
font-size: 24px;
}
.action-label {
flex: 1;
text-align: left;
font-weight: 500;
}
/* ============================================
Tag Placeholders
============================================ */
.tag-placeholder {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 10px;
background: #1a3a5a;
border: 1px solid #4a9eff;
border-radius: 4px;
font-size: 12px;
color: #4a9eff;
margin: 4px;
}
/* ============================================
Enhanced Chat Layout
============================================ */
.chat-layout {
height: calc(100vh - 60px);
overflow: hidden;
}
.chat-main {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
.chat-messages {
flex: 1;
overflow-y: auto;
padding: 20px;
scroll-behavior: smooth;
}
.chat-messages::-webkit-scrollbar {
width: 8px;
}
.chat-messages::-webkit-scrollbar-track {
background: #1a1a1a;
}
.chat-messages::-webkit-scrollbar-thumb {
background: #333;
border-radius: 4px;
}
.chat-messages::-webkit-scrollbar-thumb:hover {
background: #444;
}
.chat-input-container {
border-top: 1px solid #333;
background: #1a1a1a;
padding: 16px 20px;
}
/* ============================================
Message Header Styling
============================================ */
.message-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 8px;
}
.message-label {
font-size: 13px;
font-weight: 600;
color: #e0e0e0;
}
.message-time {
font-size: 11px;
color: #888;
}
/* ============================================
Responsive Design
============================================ */
@media (max-width: 768px) {
.quick-actions-grid {
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
gap: 8px;
}
.chat-history-item {
padding: 10px;
}
.quick-action-btn {
padding: 12px;
}
.action-icon {
font-size: 20px;
}
.action-label {
font-size: 13px;
}
}
/* ============================================
Loading States
============================================ */
.chat-history-loading {
display: flex;
justify-content: center;
padding: 20px;
}
.chat-history-loading .spinner {
width: 30px;
height: 30px;
border: 3px solid #333;
border-top-color: #4a9eff;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* ============================================
Typing Indicator
============================================ */
.typing-indicator {
display: flex;
gap: 4px;
padding: 12px 16px;
background: #1a1a1a;
border-radius: 12px;
width: fit-content;
margin: 8px 0;
}
.typing-indicator .dot {
width: 8px;
height: 8px;
background: #888;
border-radius: 50%;
animation: typingBounce 1.4s ease-in-out infinite;
}
.typing-indicator .dot:nth-child(1) {
animation-delay: 0s;
}
.typing-indicator .dot:nth-child(2) {
animation-delay: 0.2s;
}
.typing-indicator .dot:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes typingBounce {
0%, 60%, 100% {
transform: translateY(0);
}
30% {
transform: translateY(-8px);
}
}
/* ============================================
Chat Mode Buttons (Chat/Terminal)
============================================ */
.chat-modes-bar {
display: flex;
gap: 8px;
padding: 12px 16px;
background: #0d0d0d;
border-bottom: 1px solid #333;
align-items: center;
}
.mode-btn {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
background: #1a1a1a;
border: 2px solid #333;
border-radius: 8px;
color: #888;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s ease;
white-space: nowrap;
}
.mode-btn:hover {
background: #252525;
border-color: #444;
color: #e0e0e0;
}
.mode-btn.active {
background: rgba(74, 158, 255, 0.15);
border-color: #4a9eff;
color: #4a9eff;
}
.mode-icon {
font-size: 18px;
line-height: 1;
}
.mode-label {
font-size: 14px;
}
/* Mobile Responsiveness for Mode Buttons */
@media (max-width: 768px) {
.chat-modes-bar {
padding: 10px 12px;
gap: 6px;
flex-wrap: wrap;
justify-content: center;
}
.mode-btn {
flex: 1;
min-width: 0;
padding: 8px 12px;
font-size: 13px;
justify-content: center;
}
.mode-icon {
font-size: 16px;
}
.mode-label {
font-size: 13px;
}
}
@media (max-width: 480px) {
.chat-modes-bar {
padding: 8px;
gap: 4px;
}
.mode-btn {
padding: 8px 10px;
font-size: 12px;
}
.mode-btn .mode-label {
display: none;
}
.mode-btn .mode-icon {
font-size: 18px;
}
}