Spaces:
Running
Running
Okay, die Aufgaben werden jetzt angezeigt. Ich möchte einen Knopf an jeder Aufgabe, um den Pomodoro Modus mit ihr zu starten. Wenn ich Aufgaben abhake, wird die Aufgabe nicht nach erledigt verschoben. Die Progress Bars für die Tags sollen nur für Tags angezeigt werden, die auch Aufgaben haben. Das Abhaken von Aufgaben soll visuell noch cooler aussehen, bisschen gamification. Und die Timeline soll eine schmale Seitenleiste rechts in der Übersicht sein. Implementiere all das!
4549c0d
verified
| /* Custom styles for TaskForge Pro */ | |
| /* Scrollbar styling */ | |
| ::-webkit-scrollbar { | |
| width: 8px; | |
| height: 8px; | |
| } | |
| ::-webkit-scrollbar-track { | |
| @apply bg-gray-800; | |
| } | |
| ::-webkit-scrollbar-thumb { | |
| @apply bg-gray-600 rounded-full; | |
| } | |
| ::-webkit-scrollbar-thumb:hover { | |
| @apply bg-gray-500; | |
| } | |
| /* Task hover effects */ | |
| .task-item { | |
| @apply relative overflow-hidden; | |
| transition: all 0.3s ease; | |
| border-left: 4px solid transparent; | |
| } | |
| .task-item.completed { | |
| animation: completeTask 0.6s ease forwards; | |
| } | |
| @keyframes completeTask { | |
| 0% { transform: scale(1); opacity: 1; } | |
| 50% { transform: scale(0.95); opacity: 0.8; } | |
| 100% { transform: scale(1); opacity: 1; border-left-color: #10b981; } | |
| } | |
| .task-item .focus-btn { | |
| @apply absolute right-12 top-1/2 transform -translate-y-1/2; | |
| @apply p-2 rounded-full bg-orange-500 bg-opacity-0 text-orange-500; | |
| @apply transition-all duration-300 ease-in-out; | |
| opacity: 0; | |
| } | |
| .task-item:hover .focus-btn { | |
| @apply bg-opacity-20; | |
| opacity: 1; | |
| } | |
| .task-item .focus-btn:hover { | |
| @apply bg-opacity-100 text-white; | |
| } | |
| .task-item:hover { | |
| @apply transform scale-105 shadow-lg; | |
| } | |
| /* Progress bar animation */ | |
| .progress-bar-fill { | |
| transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* Focus mode animations */ | |
| @keyframes pulse { | |
| 0%, 100% { | |
| opacity: 1; | |
| } | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| .focus-pulse { | |
| animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; | |
| } | |
| /* Button focus styles */ | |
| .btn:focus { | |
| @apply outline-none ring-2 ring-orange-500 ring-offset-2 ring-offset-gray-900; | |
| } | |
| /* Tag badge styles */ | |
| .tag-badge { | |
| @apply inline-flex items-center px-2 py-1 rounded-full text-xs font-medium; | |
| } | |
| /* Timeline styles */ | |
| .timeline-hour { | |
| @apply relative border-b border-gray-700; | |
| min-height: 60px; | |
| position: relative; | |
| } | |
| .timeline-task-block { | |
| @apply absolute rounded-lg cursor-move transition-all; | |
| transition: all 0.2s ease; | |
| } | |
| .timeline-task-block:hover { | |
| @apply transform scale-105 shadow-lg; | |
| } | |
| .timeline-task-block.dragging { | |
| @apply opacity-50; | |
| } | |
| /* Modal backdrop blur */ | |
| .modal-backdrop { | |
| backdrop-filter: blur(4px); | |
| } | |
| /* Custom input styles */ | |
| input[type="text"], input[type="number"], textarea, select { | |
| @apply bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 text-gray-100; | |
| @apply focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent; | |
| } | |
| input[type="color"] { | |
| @apply cursor-pointer; | |
| } | |
| /* Navigation buttons */ | |
| .nav-btn { | |
| @apply flex items-center space-x-2 px-4 py-2 rounded-lg transition; | |
| @apply text-gray-400 hover:text-white hover:bg-gray-700; | |
| } | |
| .nav-btn.active { | |
| @apply text-orange-500 bg-gray-700; | |
| } | |
| /* View transitions */ | |
| .view { | |
| display: none; | |
| } | |
| .view.active { | |
| display: block; | |
| animation: fadeIn 0.3s ease-in-out; | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| transform: translateY(10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Drag and drop styles */ | |
| .drag-over { | |
| @apply bg-gray-700 border-2 border-dashed border-orange-500; | |
| } | |
| /* Custom checkbox */ | |
| .custom-checkbox { | |
| @apply w-5 h-5 rounded cursor-pointer appearance-none; | |
| @apply bg-gray-700 border border-gray-600; | |
| @apply checked:bg-emerald-500 checked:border-emerald-500; | |
| } | |
| .custom-checkbox:checked::after { | |
| content: '✓'; | |
| @apply block text-white text-center leading-5; | |
| } | |
| /* Time display */ | |
| .time-display { | |
| @apply font-mono text-lg tabular-nums; | |
| } | |
| /* Empty state */ | |
| .empty-state { | |
| @apply text-center py-12 text-gray-500; | |
| } | |
| .empty-state i { | |
| @apply w-16 h-16 mx-auto mb-4; | |
| } | |
| /* Responsive timeline */ | |
| @media (max-width: 768px) { | |
| #timeline-tasks { | |
| width: 100%; | |
| position: static; | |
| } | |
| #timeline-hours { | |
| margin-left: 0; | |
| } | |
| .timeline-task-block { | |
| position: relative ; | |
| width: 100% ; | |
| left: 0 ; | |
| top: auto ; | |
| } | |
| } | |
| /* Loading animation */ | |
| .loading { | |
| @apply animate-pulse; | |
| } | |
| .loading::after { | |
| content: ''; | |
| @apply absolute inset-0 bg-gray-700 rounded-lg; | |
| animation: loading 1.5s ease-in-out infinite; | |
| } | |
| @keyframes loading { | |
| 0% { | |
| transform: translateX(-100%); | |
| } | |
| 100% { | |
| transform: translateX(100%); | |
| } | |
| } | |
| /* Task priority indicator */ | |
| .priority-high { | |
| @apply border-l-4 border-red-500; | |
| } | |
| .priority-medium { | |
| @apply border-l-4 border-yellow-500; | |
| } | |
| .priority-low { | |
| @apply border-l-4 border-emerald-500; | |
| } | |
| /* Focus mode glass effect */ | |
| #focus-mode { | |
| background: linear-gradient(135deg, rgba(17, 24, 39, 0.95) 0%, rgba(17, 24, 39, 0.98) 100%); | |
| backdrop-filter: blur(10px); | |
| } | |
| /* Smooth transitions for all interactive elements */ | |
| * { | |
| transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease; | |
| } |