AIstudioProxyAPI / static /frontend /src /components /settings /SettingsPage.module.css
peijun1's picture
Deploy AI Studio Proxy API to Hugging Face Spaces
a5784e9
Raw
History Blame Contribute Delete
6.08 kB
/* Settings Page Styles */
.settingsPage {
padding: var(--space-4);
max-width: 900px;
margin: 0 auto;
overflow-y: auto;
height: 100%;
}
.pageTitle {
display: flex;
align-items: center;
gap: var(--space-3);
font-size: var(--text-xl);
font-weight: 600;
color: var(--text-primary);
margin-bottom: var(--space-6);
padding-bottom: var(--space-3);
border-bottom: 1px solid var(--border-default);
}
.sections {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
/* Status Bar - Minimal inline status */
.statusBar {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: var(--space-2);
padding: var(--space-2) var(--space-3);
background: var(--bg-secondary);
border-radius: var(--radius-md);
border: 1px solid var(--border-default);
}
.statusChip {
display: inline-flex;
align-items: center;
gap: var(--space-1);
padding: var(--space-1) var(--space-2);
background: var(--bg-tertiary);
border-radius: var(--radius-sm);
font-size: var(--text-xs);
color: var(--text-secondary);
}
.statusChip:first-child {
color: var(--accent-success);
}
.section {
background: var(--bg-secondary);
border-radius: var(--radius-lg);
padding: var(--space-4);
border: 1px solid var(--border-default);
}
.sectionTitle {
display: flex;
align-items: center;
gap: var(--space-2);
font-size: var(--text-base);
font-weight: 600;
color: var(--text-primary);
margin-bottom: var(--space-2);
}
.sectionDesc {
font-size: var(--text-sm);
color: var(--text-muted);
margin-bottom: var(--space-4);
line-height: 1.5;
}
.refreshButton {
margin-left: auto;
padding: var(--space-1);
border-radius: var(--radius-sm);
color: var(--text-muted);
transition: all var(--transition-fast);
}
.refreshButton:hover {
background: var(--bg-elevated);
color: var(--text-primary);
}
/* Status Grid */
.statusGrid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: var(--space-3);
}
.statusItem {
display: flex;
flex-direction: column;
gap: var(--space-1);
padding: var(--space-3);
background: var(--bg-tertiary);
border-radius: var(--radius-md);
}
.statusLabel {
font-size: var(--text-xs);
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.05em;
}
.statusValue {
display: flex;
align-items: center;
gap: var(--space-1);
font-size: var(--text-sm);
color: var(--text-primary);
font-weight: 500;
}
.statusOk {
color: var(--accent-success);
}
/* Form Controls */
.formGroup {
margin-bottom: var(--space-3);
}
.label {
display: block;
font-size: var(--text-sm);
color: var(--text-secondary);
margin-bottom: var(--space-1);
}
.toggleLabel {
display: flex;
align-items: center;
gap: var(--space-2);
font-size: var(--text-sm);
color: var(--text-primary);
cursor: pointer;
}
.toggleLabel input[type="checkbox"] {
width: 18px;
height: 18px;
accent-color: var(--accent-primary);
}
.input {
width: 100%;
padding: var(--space-2) var(--space-3);
background: var(--bg-primary);
border: 1px solid var(--border-default);
border-radius: var(--radius-md);
color: var(--text-primary);
font-size: var(--text-sm);
}
.input:focus {
border-color: var(--accent-primary);
outline: none;
}
.input:disabled {
opacity: 0.5;
cursor: not-allowed;
}
/* Buttons */
.saveButton,
.addButton {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-4);
background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
color: white;
border-radius: var(--radius-md);
font-size: var(--text-sm);
font-weight: 500;
cursor: pointer;
transition: all var(--transition-fast);
}
.saveButton:hover:not(:disabled),
.addButton:hover:not(:disabled) {
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
.saveButton:disabled,
.addButton:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.deleteButton {
padding: var(--space-1) var(--space-2);
font-size: var(--text-xs);
color: var(--accent-error);
border-radius: var(--radius-sm);
transition: all var(--transition-fast);
}
.deleteButton:hover {
background: color-mix(in srgb, var(--accent-error) 15%, transparent);
}
/* Key List */
.keyList {
display: flex;
flex-direction: column;
gap: var(--space-2);
margin-bottom: var(--space-3);
}
.keyItem {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--space-2) var(--space-3);
background: var(--bg-tertiary);
border-radius: var(--radius-md);
}
.keyValue {
font-family: var(--font-mono);
font-size: var(--text-sm);
color: var(--text-secondary);
}
.addKeyForm {
display: flex;
gap: var(--space-2);
}
.addKeyForm .input {
flex: 1;
}
.emptyState {
text-align: center;
padding: var(--space-4);
color: var(--text-muted);
font-size: var(--text-sm);
}
/* Messages */
.message {
display: flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-3);
border-radius: var(--radius-md);
font-size: var(--text-sm);
margin-top: var(--space-3);
}
.message.success {
background: color-mix(in srgb, var(--accent-success) 15%, transparent);
color: var(--accent-success);
}
.message.error {
background: color-mix(in srgb, var(--accent-error) 15%, transparent);
color: var(--accent-error);
}
/* Info Box */
.infoBox {
display: flex;
align-items: center;
gap: var(--space-2);
padding: var(--space-2) var(--space-3);
background: color-mix(in srgb, var(--accent-primary) 10%, transparent);
border-radius: var(--radius-md);
font-size: var(--text-sm);
color: var(--accent-primary);
margin-bottom: var(--space-3);
}
/* Loading */
.loading {
display: flex;
align-items: center;
justify-content: center;
gap: var(--space-2);
padding: var(--space-4);
color: var(--text-muted);
}
.spinning {
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}