This commit is contained in:
eddy
2026-08-01 02:11:12 +08:00
parent d85032bb09
commit c7c3db42f6
33 changed files with 7135 additions and 1 deletions
+242
View File
@@ -0,0 +1,242 @@
/* Base */
:root {
--primary: #0d6efd;
--todo: #6c757d;
--progress: #ffc107;
--complete: #198754;
--priority-low: #198754;
--priority-medium: #fd7e14;
--priority-high: #dc3545;
--danger: #dc3545;
--warning: #fd7e14;
--surface: #fff;
--surface-raised: #fffffff0;
--background: #f4f6fa;
--overdue-background: #fff5f5;
--due-soon-background: #fff8f0;
--muted: #6c757d;
--timeline: #dee2e6;
--header-start: #667eea;
--header-end: #764ba2;
--shadow-subtle: #00000012;
--shadow-hover: #0002;
--shadow-pinned: #ffc10744;
}
body {
background: var(--background);
font-family: 'Microsoft YaHei', system-ui, sans-serif;
}
.task-header {
background: linear-gradient(135deg, var(--header-start), var(--header-end));
color: var(--surface);
padding: 1.25rem;
border-radius: 1rem;
margin-bottom: 1.5rem;
}
.task-header h1 {
font-size: 1.8rem;
margin: 0;
}
.status-column {
background: var(--surface);
border-radius: 1rem;
padding: 1rem;
box-shadow: 0 2px 12px var(--shadow-subtle);
min-height: 12rem;
}
.status-column-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 0.5rem;
margin-bottom: 1rem;
}
.status-column-header h4 {
font-size: 1rem;
margin: 0;
}
.sort-selector {
font-size: 0.72rem;
padding: 0.25rem;
border: 1px solid var(--timeline);
border-radius: 0.35rem;
max-width: 45%;
}
/* Task cards */
.task-card {
position: relative;
border-left: 4px solid var(--primary);
margin-bottom: 1rem;
transition: 0.2s;
}
.task-card:hover {
transform: translateY(-2px);
box-shadow: 0 5px 14px var(--shadow-hover);
}
.task-card.todo {
border-left-color: var(--todo);
}
.task-card.inProgress {
border-left-color: var(--progress);
}
.task-card.completed {
border-left-color: var(--complete);
}
.task-card.overdue {
border-left-color: var(--danger) !important;
background: var(--overdue-background);
}
.task-card.due-soon {
border-left-color: var(--warning) !important;
background: var(--due-soon-background);
}
.task-card.hidden-task {
opacity: 0.6;
}
.task-card.pinned {
border-top: 3px solid var(--progress);
box-shadow: 0 4px 12px var(--shadow-pinned);
}
.task-actions {
position: absolute;
right: 0.35rem;
top: 0.35rem;
z-index: 2;
background: var(--surface-raised);
border-radius: 0.4rem;
opacity: 0;
}
.task-card:hover .task-actions {
opacity: 1;
}
.task-actions .btn {
padding: 0.25rem 0.4rem;
}
.priority-badge {
font-size: 0.7rem;
border-radius: 1rem;
padding: 0.2rem 0.5rem;
color: var(--surface);
}
.priority-low-badge {
background: var(--priority-low);
}
.priority-medium-badge {
background: var(--priority-medium);
}
.priority-high-badge {
background: var(--priority-high);
}
.progress-custom {
height: 0.45rem;
}
.person-badge {
font-size: 0.75rem;
margin: 0.1rem;
}
.task-description-display {
white-space: pre-wrap;
overflow-wrap: anywhere;
}
/* Timeline */
.timeline-toggle {
cursor: pointer;
}
.timeline {
position: relative;
padding-left: 1.25rem;
margin-top: 0.75rem;
}
.timeline:before {
content: '';
position: absolute;
left: 0.5rem;
inset-block: 0;
width: 2px;
background: var(--timeline);
}
.timeline-item {
position: relative;
padding-bottom: 0.75rem;
margin-bottom: 0.5rem;
}
.timeline-item:before {
content: '';
position: absolute;
left: -0.72rem;
top: 0.35rem;
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: var(--primary);
}
.timeline-content,
.timeline-form,
.timeline-edit-form {
background: var(--background);
padding: 0.65rem;
border-radius: 0.5rem;
font-size: 0.85rem;
}
.timeline-date {
font-size: 0.75rem;
color: var(--muted);
}
.timeline-item-actions {
float: right;
opacity: 0;
}
.timeline-item:hover .timeline-item-actions {
opacity: 1;
}
/* Overlays and controls */
.notification {
position: fixed;
right: 1rem;
top: 1rem;
z-index: 2000;
max-width: min(28rem, 90vw);
}
.visibility-toggle {
padding: 0.1rem;
}
.empty-state {
color: var(--muted);
text-align: center;
padding: 1rem;
}
/* Responsive */
@media (max-width: 768px) {
.task-actions,
.timeline-item-actions {
opacity: 0.9;
}
.toolbar .btn {
flex: 1;
}
.status-column {
margin-bottom: 0.5rem;
}
}
@media (max-width: 576px) {
.task-header h1 {
font-size: 1.35rem;
}
.status-column-header {
align-items: flex-start;
}
.sort-selector {
max-width: 50%;
}
.task-actions .btn {
min-width: 2.25rem;
min-height: 2.25rem;
}
.toolbar .btn span:not(#langBtn) {
display: none;
}
}