| 17 |
17 |
|
<span class="mobile-view-title" id="mobile-view-title"></span>
|
| 18 |
18 |
|
</div>
|
| 19 |
19 |
|
<div class="header-actions">
|
|
20 |
+ |
<button class="sync-indicator" id="sync-indicator" onclick="GoingsOn.settings.openCloudSync()" title="Cloud Sync" aria-label="Cloud sync status" style="display:none;">
|
|
21 |
+ |
<span class="sync-dot" id="sync-dot"></span>
|
|
22 |
+ |
</button>
|
| 20 |
23 |
|
<button class="settings-btn" onclick="GoingsOn.navigation.switchView('contacts')" title="Contacts" aria-label="Open contacts">Contacts</button>
|
| 21 |
24 |
|
<button class="settings-btn" onclick="GoingsOn.settings.open()" title="Settings" aria-label="Open settings">Settings</button>
|
| 22 |
25 |
|
<button class="settings-btn shortcut-hint-btn" onclick="GoingsOn.keyboard.showShortcuts()" title="Keyboard shortcuts (?)" aria-label="Show keyboard shortcuts">?</button>
|
| 65 |
68 |
|
<div id="tasks-view" class="view hidden" role="tabpanel" aria-labelledby="tasks-tab">
|
| 66 |
69 |
|
<div class="page-header">
|
| 67 |
70 |
|
<h2 class="page-title">Tasks</h2>
|
|
71 |
+ |
<div class="view-toggle" id="task-view-toggle">
|
|
72 |
+ |
<button class="view-toggle-btn active" data-mode="list" onclick="GoingsOn.tasks.setViewMode('list')">List</button>
|
|
73 |
+ |
<button class="view-toggle-btn" data-mode="board" onclick="GoingsOn.tasks.setViewMode('board')">Board</button>
|
|
74 |
+ |
</div>
|
| 68 |
75 |
|
<button class="btn btn-primary" onclick="GoingsOn.tasks.openNew()">+ New Task</button>
|
| 69 |
76 |
|
</div>
|
| 70 |
77 |
|
<div id="task-bulk-actions" class="bulk-actions-bar hidden" role="toolbar" aria-label="Bulk task actions">
|
| 142 |
149 |
|
</div>
|
| 143 |
150 |
|
</div>
|
| 144 |
151 |
|
</div>
|
|
152 |
+ |
<div id="task-kanban-board" class="kanban-board hidden" role="region" aria-label="Task board">
|
|
153 |
+ |
<!-- Rendered by tasks-kanban.js -->
|
|
154 |
+ |
</div>
|
| 145 |
155 |
|
<!-- Pagination -->
|
| 146 |
156 |
|
<div id="task-pagination" class="pagination-controls" role="navigation" aria-label="Task list pagination" style="display: none;">
|
| 147 |
157 |
|
<button class="btn btn-sm" id="task-prev-page" onclick="GoingsOn.tasks.goToPage('prev')" disabled aria-label="Previous page">← Previous</button>
|
| 432 |
442 |
|
<!-- Domain render modules (load before their parent domains) -->
|
| 433 |
443 |
|
<script src="js/projects-render.js"></script>
|
| 434 |
444 |
|
<script src="js/tasks-render.js"></script>
|
|
445 |
+ |
<script src="js/tasks-kanban.js"></script>
|
| 435 |
446 |
|
<script src="js/contacts-render.js"></script>
|
| 436 |
447 |
|
<script src="js/day-planning-render.js"></script>
|
| 437 |
448 |
|
<script src="js/weekly-review-render.js"></script>
|