@@ -319,9 +339,9 @@ templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, side
hx-swap="innerHTML"
hx-push-url={ "/tablos/" + tablo.ID.String() + "/tasks" }
if activeTab == "tasks" {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 shrink-0 min-h-[44px] text-[#804EEC] border-[#804EEC]"
+ class="tab-nav-item is-active"
} else {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 border-transparent shrink-0 min-h-[44px] text-[#667085] hover:text-gray-900"
+ class="tab-nav-item"
}
>
@@ -334,9 +354,9 @@ templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, side
hx-swap="innerHTML"
hx-push-url={ "/tablos/" + tablo.ID.String() + "/files" }
if activeTab == "files" {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 shrink-0 min-h-[44px] text-[#804EEC] border-[#804EEC]"
+ class="tab-nav-item is-active"
} else {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 border-transparent shrink-0 min-h-[44px] text-[#667085] hover:text-gray-900"
+ class="tab-nav-item"
}
>
@@ -349,9 +369,9 @@ templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, side
hx-swap="innerHTML"
hx-push-url={ "/tablos/" + tablo.ID.String() + "/discussion" }
if activeTab == "discussion" {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 shrink-0 min-h-[44px] text-[#804EEC] border-[#804EEC]"
+ class="tab-nav-item is-active"
} else {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 border-transparent shrink-0 min-h-[44px] text-[#667085] hover:text-gray-900"
+ class="tab-nav-item"
}
>
@@ -364,9 +384,9 @@ templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, side
hx-swap="innerHTML"
hx-push-url={ "/tablos/" + tablo.ID.String() + "/events" }
if activeTab == "events" {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 shrink-0 min-h-[44px] text-[#804EEC] border-[#804EEC]"
+ class="tab-nav-item is-active"
} else {
- class="flex items-center gap-2 pb-3 px-1 text-sm font-semibold transition-colors border-b-2 border-transparent shrink-0 min-h-[44px] text-[#667085] hover:text-gray-900"
+ class="tab-nav-item"
}
>
@@ -392,15 +412,14 @@ templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, side
}
}
-// TabloOverviewTabFragment renders the overview tab content — description display.
+// TabloOverviewTabFragment renders the overview tab content — description inline-edit zone.
// Returned as a standalone fragment for HTMX tab-switch responses.
+// Description zone relocated here from the persistent header (Phase 16 Plan 02).
templ TabloOverviewTabFragment(tablo sqlc.Tablo, csrfToken string) {
- if tablo.Description.Valid && tablo.Description.String != "" {
-
{ tablo.Description.String }
- } else {
-
No description.
- }
+
+ @TabloDescDisplay(tablo, csrfToken)
+
}
@@ -409,7 +428,6 @@ templ TabloOverviewTabFragment(tablo sqlc.Tablo, csrfToken string) {
// Lives in tablos.templ (tablo-level concern) per plan D-07.
templ TasksTabFragment(tablo sqlc.Tablo, tasks []sqlc.Task, etapes []sqlc.Etape, counts EtapeTaskCounts, filter EtapeFilter, csrfToken string) {
- @EtapeStrip(tablo.ID, etapes, counts, filter, csrfToken, false)
@KanbanBoard(tablo.ID, csrfToken, tasks, filter)
}
@@ -420,7 +438,7 @@ templ TasksTabFragment(tablo sqlc.Tablo, tasks []sqlc.Task, etapes []sqlc.Etape,
// UI-SPEC §4 Interaction Contract — title inline-edit display state.
templ TabloTitleDisplay(tablo sqlc.Tablo, csrfToken string) {