feat(web): add Ctrl+K command palette search modal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,33 +1,37 @@
|
||||
@using TaskTracker.Api.Pages
|
||||
@using TaskTracker.Core.Enums
|
||||
@model List<TaskTracker.Core.Entities.WorkTask>
|
||||
|
||||
@* Placeholder — full implementation in Task 6 (Search Modal) *@
|
||||
<div class="search-results">
|
||||
@if (Model.Count == 0)
|
||||
@{
|
||||
var statusColors = new Dictionary<WorkTaskStatus, string>
|
||||
{
|
||||
<div style="padding: 16px; text-align: center; color: var(--color-text-secondary); font-size: 13px;">
|
||||
No results found
|
||||
[WorkTaskStatus.Pending] = "#64748b",
|
||||
[WorkTaskStatus.Active] = "#3b82f6",
|
||||
[WorkTaskStatus.Paused] = "#eab308",
|
||||
[WorkTaskStatus.Completed] = "#22c55e",
|
||||
[WorkTaskStatus.Abandoned] = "#ef4444",
|
||||
};
|
||||
}
|
||||
|
||||
@if (Model.Count == 0)
|
||||
{
|
||||
<div class="search-empty">No results found</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@for (var i = 0; i < Model.Count; i++)
|
||||
{
|
||||
var task = Model[i];
|
||||
var color = statusColors.GetValueOrDefault(task.Status, "#64748b");
|
||||
<div class="search-result @(i == 0 ? "search-result--selected" : "")"
|
||||
data-task-id="@task.Id"
|
||||
onclick="selectSearchResult(@task.Id)"
|
||||
onmouseenter="highlightResult(this)">
|
||||
<span class="search-result-dot" style="background: @color"></span>
|
||||
<span class="search-result-title">@task.Title</span>
|
||||
@if (!string.IsNullOrEmpty(task.Category))
|
||||
{
|
||||
<span class="search-result-category">@task.Category</span>
|
||||
}
|
||||
<span class="search-result-arrow">→</span>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
@foreach (var task in Model)
|
||||
{
|
||||
<div class="search-result-item"
|
||||
hx-get="/board?handler=TaskDetail&id=@task.Id"
|
||||
hx-target="#detail-panel"
|
||||
hx-swap="innerHTML"
|
||||
style="padding: 10px 16px; cursor: pointer; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--color-border);">
|
||||
<span class="badge badge--@task.Status.ToString().ToLower()" style="flex-shrink: 0;">
|
||||
@task.Status
|
||||
</span>
|
||||
<span style="font-size: 14px; color: var(--color-text-primary);">@task.Title</span>
|
||||
@if (!string.IsNullOrEmpty(task.Category))
|
||||
{
|
||||
<span style="margin-left: auto; font-size: 11px; color: var(--color-text-tertiary);">@task.Category</span>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user