Files
SuperCharged-Claude-Code-Up…/public/claude-ide/terminal.css
uroma 9e289cb0a1 feat: add terminal type selection in directory picker
Add CSS styling for the terminal type dropdown that was already
implemented in the JavaScript but wasn't visible due to missing styles.

The dropdown allows users to choose between:
- Standard Shell (bash/zsh) - default
- Claude Code CLI - runs claude --dangerously-skip-permissions

When Claude Code CLI is selected:
- Session picker is skipped (not needed)
- Terminal automatically launches with claude --dangerously-skip-permissions
- Mode is automatically set to 'session'

Changes:
- Add .terminal-type-selection, .terminal-type-select styles to terminal.css
- Match existing modal styling (background, borders, focus states)
- JavaScript was already implemented from previous work

Resolves: "Claude Code CLI still not appears under terminal > new terminal"

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 18:22:11 +00:00

683 lines
11 KiB
CSS

/**
* Terminal Panel Styles
*/
/* Terminal Layout */
.terminal-layout {
display: flex;
flex-direction: column;
height: calc(100vh - 60px);
background: #0d0d0d;
}
/* Terminal Header */
.terminal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 20px;
background: #1a1a1a;
border-bottom: 1px solid #333;
}
.terminal-header h2 {
margin: 0;
font-size: 18px;
font-weight: 600;
color: #e0e0e0;
}
/* Terminal Tabs */
.terminal-tabs {
display: flex;
gap: 2px;
padding: 8px 8px 0;
background: #0a0a0a;
border-bottom: 1px solid #333;
overflow-x: auto;
overflow-y: hidden;
min-height: 40px;
}
.terminal-tabs::-webkit-scrollbar {
height: 6px;
}
.terminal-tabs::-webkit-scrollbar-track {
background: #1a1a1a;
}
.terminal-tabs::-webkit-scrollbar-thumb {
background: #444;
border-radius: 3px;
}
.terminal-tabs::-webkit-scrollbar-thumb:hover {
background: #555;
}
.terminal-tab {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
background: #1a1a1a;
border: 1px solid #333;
border-bottom: none;
border-radius: 6px 6px 0 0;
color: #888;
font-size: 13px;
cursor: pointer;
transition: all 0.2s ease;
white-space: nowrap;
user-select: none;
}
.terminal-tab:hover {
background: #252525;
color: #e0e0e0;
}
.terminal-tab.active {
background: #2a2a2a;
color: #e0e0e0;
border-color: #4a9eff;
border-bottom-color: #2a2a2a;
}
.tab-id {
font-family: 'Monaco', 'Menlo', monospace;
font-size: 11px;
}
.tab-mode {
font-size: 14px;
}
.tab-close {
background: none;
border: none;
color: #888;
font-size: 18px;
cursor: pointer;
padding: 0;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 3px;
transition: all 0.2s ease;
}
.tab-close:hover {
background: #ff6b6b;
color: white;
}
/* Terminals Container */
.terminals-container {
flex: 1;
position: relative;
overflow: hidden;
}
.terminal-placeholder {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
color: #666;
text-align: center;
}
.terminal-placeholder h3 {
margin: 0 0 8px 0;
font-size: 20px;
font-weight: 600;
color: #888;
}
.terminal-placeholder p {
margin: 0;
font-size: 14px;
}
/* Terminal Container */
.terminal-container {
display: none;
flex-direction: column;
height: 100%;
background: #1a1a1a;
}
.terminal-container.active {
display: flex;
}
/* Terminal Toolbar */
.terminal-toolbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 16px;
background: #252525;
border-bottom: 1px solid #333;
}
.terminal-info {
display: flex;
align-items: center;
gap: 12px;
font-size: 12px;
}
.terminal-id {
font-family: 'Monaco', 'Menlo', monospace;
color: #888;
}
.terminal-path {
color: #4a9eff;
max-width: 300px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.terminal-mode {
padding: 4px 8px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
}
.terminal-mode[data-mode="session"] {
background: rgba(74, 158, 255, 0.15);
color: #4a9eff;
}
.terminal-mode[data-mode="shell"] {
background: rgba(81, 207, 102, 0.15);
color: #51cf66;
}
.terminal-mode[data-mode="mixed"] {
background: rgba(255, 193, 7, 0.15);
color: #ffc107;
}
.terminal-session {
padding: 4px 8px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
color: #4a9eff;
margin-left: 8px;
}
.terminal-actions {
display: flex;
gap: 8px;
}
.btn-terminal-attach,
.btn-terminal-mode,
.btn-terminal-clear,
.btn-terminal-close {
padding: 6px 12px;
background: #2a2a2a;
border: 1px solid #444;
border-radius: 4px;
color: #e0e0e0;
font-size: 12px;
cursor: pointer;
transition: all 0.2s ease;
}
.btn-terminal-attach:hover,
.btn-terminal-mode:hover,
.btn-terminal-clear:hover,
.btn-terminal-close:hover {
background: #3a3a3a;
border-color: #555;
}
.btn-terminal-close:hover {
background: #ff6b6b;
border-color: #ff6b6b;
color: white;
}
/* Terminal xterm.js container */
.terminal-xterm {
flex: 1;
padding: 8px;
overflow: hidden;
position: relative;
}
.terminal-xterm .xterm {
height: 100%;
}
.terminal-xterm .xterm:focus {
outline: 2px solid #4a9eff;
outline-offset: -2px;
}
.terminal-xterm .xterm .xterm-viewport {
overflow-y: auto;
}
/* Directory Picker Modal */
.directory-picker-modal {
max-width: 600px;
width: 90%;
}
.directory-picker-modal .modal-body {
max-height: 400px;
overflow-y: auto;
}
.recent-directories,
.custom-directory,
.terminal-type-selection {
margin-bottom: 20px;
}
.recent-directories label,
.custom-directory label,
.terminal-type-selection label {
display: block;
font-size: 13px;
font-weight: 600;
color: #888;
margin-bottom: 8px;
text-transform: uppercase;
}
.terminal-type-select {
width: 100%;
padding: 10px 12px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 6px;
color: #e0e0e0;
font-size: 14px;
cursor: pointer;
transition: all 0.2s ease;
}
.terminal-type-select:hover {
border-color: #555;
}
.terminal-type-select:focus {
outline: none;
border-color: #4a9eff;
box-shadow: 0 0 0 3px rgba(74, 158, 255, 0.1);
}
.directory-list {
display: flex;
flex-direction: column;
gap: 8px;
max-height: 200px;
overflow-y: auto;
padding: 4px;
}
.directory-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 6px;
color: #e0e0e0;
font-size: 13px;
cursor: pointer;
transition: all 0.2s ease;
text-align: left;
}
.directory-item:hover {
background: #252525;
border-color: #4a9eff;
}
.directory-item.selected {
background: #2a2a2a;
border-color: #4a9eff;
}
.dir-icon {
font-size: 16px;
}
.dir-path {
font-family: 'Monaco', 'Menlo', monospace;
font-size: 12px;
overflow: hidden;
text-overflow: ellipsis;
}
.directory-input {
width: 100%;
padding: 10px 12px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 6px;
color: #e0e0e0;
font-family: 'Monaco', 'Menlo', monospace;
font-size: 13px;
outline: none;
}
.directory-input:focus {
border-color: #4a9eff;
}
/* Session Picker Modal */
.session-picker-modal {
max-width: 650px;
width: 90%;
}
.session-picker-modal .modal-body {
max-height: 450px;
overflow-y: auto;
}
.session-list {
display: flex;
flex-direction: column;
gap: 8px;
padding: 4px;
}
.session-list-item {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 14px;
background: #1a1a1a;
border: 1px solid #333;
border-radius: 8px;
color: #e0e0e0;
font-size: 13px;
cursor: pointer;
transition: all 0.2s ease;
text-align: left;
width: 100%;
}
.session-list-item:hover {
background: #252525;
border-color: #4a9eff;
transform: translateY(-1px);
box-shadow: 0 2px 8px rgba(74, 158, 255, 0.15);
}
.session-list-item.selected {
background: #2a2a2a;
border-color: #4a9eff;
box-shadow: 0 0 0 2px rgba(74, 158, 255, 0.3);
}
.session-list-item.create-new {
background: linear-gradient(135deg, rgba(74, 158, 255, 0.1) 0%, rgba(74, 158, 255, 0.05) 100%);
border-color: #4a9eff;
}
.session-list-item.create-new:hover {
background: linear-gradient(135deg, rgba(74, 158, 255, 0.15) 0%, rgba(74, 158, 255, 0.1) 100%);
border-color: #5aaeff;
}
.session-list-item.create-new.selected {
background: linear-gradient(135deg, rgba(74, 158, 255, 0.2) 0%, rgba(74, 158, 255, 0.15) 100%);
border-color: #4a9eff;
box-shadow: 0 0 0 2px rgba(74, 158, 255, 0.4);
}
.session-icon {
font-size: 20px;
flex-shrink: 0;
}
.session-info {
flex: 1;
min-width: 0;
}
.session-name {
font-weight: 600;
font-size: 14px;
color: #e0e0e0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-bottom: 2px;
}
.session-detail {
display: flex;
align-items: center;
gap: 12px;
font-size: 12px;
color: #888;
}
.session-time {
color: #888;
}
.session-id {
font-family: 'Monaco', 'Menlo', monospace;
color: #666;
font-size: 11px;
}
/* Status Badges */
.status-badge {
padding: 4px 10px;
border-radius: 12px;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
flex-shrink: 0;
}
.status-badge.active {
background: rgba(81, 207, 102, 0.15);
color: #51cf66;
border: 1px solid rgba(81, 207, 102, 0.3);
}
.status-badge.done {
background: rgba(136, 136, 136, 0.15);
color: #888;
border: 1px solid rgba(136, 136, 136, 0.3);
}
.status-badge.local {
background: rgba(255, 136, 77, 0.15);
color: #ff874d;
border: 1px solid rgba(255, 136, 77, 0.3);
}
/* Session Sections */
.session-section {
margin-top: 16px;
}
.session-section:first-of-type {
margin-top: 0;
}
.section-header {
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
color: #888;
margin-bottom: 8px;
padding: 0 4px;
letter-spacing: 0.5px;
}
.no-sessions {
text-align: center;
padding: 40px 20px;
color: #666;
}
.no-sessions p {
margin: 0;
font-size: 14px;
}
/* Restore Toast */
.restore-toast {
max-width: 400px;
}
.restore-content {
display: flex;
align-items: flex-start;
gap: 12px;
}
.restore-message {
flex: 1;
}
.restore-message strong {
display: block;
margin-bottom: 4px;
color: #e0e0e0;
}
.restore-message br + span {
font-size: 13px;
color: #888;
}
.restore-actions {
display: flex;
gap: 8px;
margin-top: 12px;
}
.btn-restore-all,
.btn-dismiss {
padding: 6px 12px;
border-radius: 4px;
font-size: 12px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.btn-restore-all {
background: #4a9eff;
border: none;
color: white;
}
.btn-restore-all:hover {
background: #3a8eef;
}
.btn-dismiss {
background: #2a2a2a;
border: 1px solid #444;
color: #e0e0e0;
}
.btn-dismiss:hover {
background: #3a3a3a;
}
/* Responsive */
@media (max-width: 768px) {
.terminal-header {
padding: 10px 12px;
}
.terminal-header h2 {
font-size: 16px;
}
.terminal-toolbar {
flex-direction: column;
gap: 8px;
align-items: flex-start;
}
.terminal-actions {
width: 100%;
justify-content: flex-end;
}
.terminal-path {
max-width: 150px;
}
.session-picker-modal {
max-width: 95%;
}
.session-list-item {
padding: 10px 12px;
}
.session-name {
font-size: 13px;
}
.session-detail {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
}
@media (max-width: 480px) {
.terminal-tab {
padding: 6px 8px;
font-size: 12px;
}
.tab-id {
display: none;
}
.terminal-toolbar {
font-size: 11px;
}
.terminal-path {
max-width: 100px;
}
.session-list-item {
gap: 8px;
padding: 8px 10px;
}
.session-icon {
font-size: 16px;
}
.status-badge {
font-size: 10px;
padding: 3px 8px;
}
}