- 新增 Neo4j 图数据库 handler、service、model - 后端添加 SaveGraph API 接口 - 前端 Database.vue 重构,拆分为独立组件 - 新增 web/src/views/database/ 组件目录 - 删除临时文件 (temp_*.go) - 添加 Neo4j 相关 API 需求文档 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
128 lines
2.7 KiB
CSS
128 lines
2.7 KiB
CSS
/* Button - 按钮样式 */
|
|
|
|
/* 主要按钮 */
|
|
.btn-primary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--spacing-sm);
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
font-size: var(--font-size-sm);
|
|
font-weight: 500;
|
|
color: white;
|
|
background: linear-gradient(to right, var(--color-primary), #ef4444);
|
|
border-radius: var(--radius-md);
|
|
transition: all var(--transition-base);
|
|
cursor: pointer;
|
|
border: none;
|
|
}
|
|
|
|
.btn-primary:hover {
|
|
background: linear-gradient(to right, #ffb732, #dc2626);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3);
|
|
}
|
|
|
|
.btn-primary:active {
|
|
transform: translateY(0);
|
|
box-shadow: 0 2px 8px rgba(255, 107, 53, 0.2);
|
|
}
|
|
|
|
.btn-primary:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
box-shadow: none;
|
|
}
|
|
|
|
/* 次要按钮 */
|
|
.btn-secondary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--spacing-sm);
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
font-size: var(--font-size-sm);
|
|
color: #d1d5db;
|
|
background-color: #374151;
|
|
border: 1px solid #4b5563;
|
|
border-radius: var(--radius-md);
|
|
transition: all var(--transition-base);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.btn-secondary:hover {
|
|
background-color: #4b5563;
|
|
border-color: #6b7280;
|
|
}
|
|
|
|
.btn-secondary:active {
|
|
transform: scale(0.98);
|
|
}
|
|
|
|
/* 图标按钮 */
|
|
.btn-icon {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: var(--spacing-sm);
|
|
border-radius: var(--radius-md);
|
|
transition: all var(--transition-fast);
|
|
cursor: pointer;
|
|
background: transparent;
|
|
border: none;
|
|
color: #9ca3af;
|
|
}
|
|
|
|
.btn-icon:hover {
|
|
background-color: #374151;
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.btn-icon:active {
|
|
transform: scale(0.95);
|
|
}
|
|
|
|
/* 危险按钮 */
|
|
.btn-danger {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--spacing-sm);
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
font-size: var(--font-size-sm);
|
|
font-weight: 500;
|
|
color: white;
|
|
background-color: var(--color-danger);
|
|
border-radius: var(--radius-md);
|
|
transition: all var(--transition-base);
|
|
cursor: pointer;
|
|
border: none;
|
|
}
|
|
|
|
.btn-danger:hover {
|
|
background-color: #dc2626;
|
|
box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
|
|
}
|
|
|
|
/* 幽灵按钮 */
|
|
.btn-ghost {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--spacing-sm);
|
|
padding: var(--spacing-sm) var(--spacing-lg);
|
|
font-size: var(--font-size-sm);
|
|
color: #9ca3af;
|
|
background: transparent;
|
|
border-radius: var(--radius-md);
|
|
transition: all var(--transition-base);
|
|
cursor: pointer;
|
|
border: none;
|
|
}
|
|
|
|
.btn-ghost:hover {
|
|
background-color: #374151;
|
|
color: white;
|
|
}
|