From 443a38dfc8832bccd53e961e4ffd9b8513221f67 Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Sat, 16 May 2026 23:37:16 +0200 Subject: [PATCH] feat(16-02): restyle TabloDetailPage header, tab nav, metadata row; remove EtapeStrip - Replace header with project-card-top layout: color avatar with first char, tablo-title-zone - Replace Discussion link/Invite button/Delete button with @ui.IconButton and @ui.Button using design token variants - Add inline tablo-delete-zone with trash @ui.IconButton (does not use TabloDeleteButtonFragment) - Replace metadata row hardcoded flex/hex classes with tablo-metadata-row, @ui.Badge(BadgeVariantPrimary), project-progress-track/bar - Replace 5 tab nav elements from long inline Tailwind hex classes to tab-nav-item / tab-nav-item is-active - Wrap tab nav in class="tab-nav" replacing raw flex container - Move @TabloDescDisplay call from persistent header into TabloOverviewTabFragment - Remove @EtapeStrip call from TasksTabFragment (D-E01; KanbanBoard call site update deferred to Plan 03) - Remove last #804EEC hex value from TabloTitleDisplay hover class - Regenerated tablos_templ.go via templ generate --- backend/templates/tablos.templ | 120 +++++++++++++++++++-------------- 1 file changed, 69 insertions(+), 51 deletions(-) diff --git a/backend/templates/tablos.templ b/backend/templates/tablos.templ index 1b57182..6cdb2bd 100644 --- a/backend/templates/tablos.templ +++ b/backend/templates/tablos.templ @@ -240,63 +240,83 @@ templ TabloCardWithOOBFormClear(tablo sqlc.Tablo, csrfToken string) { // D-07: signature includes activeTab string param; D-08: tab bar links carry hx-push-url. templ TabloDetailPage(user *auth.User, csrfToken string, activePath string, sidebarTablos []sqlc.Tablo, tablo sqlc.Tablo, tasks []sqlc.Task, etapes []sqlc.Etape, counts EtapeTaskCounts, filter EtapeFilter, files []sqlc.TabloFile, events EventsCalendar, discussion DiscussionTabData, activeTab string) { @AppLayout("Tablos — Xtablo", user, csrfToken, activePath, sidebarTablos) { - +
-
-
+
+
+ if tablo.Color.Valid && tablo.Color.String != "" { + + if len(tablo.Title) > 0 { + { string([]rune(tablo.Title)[0:1]) } + } + + } else { + + if len(tablo.Title) > 0 { + { string([]rune(tablo.Title)[0:1]) } + } + + }
@TabloTitleDisplay(tablo, csrfToken)
-
+
- - Discussion + @ui.IconButton(ui.IconButtonProps{ + Label: "Discussion", + Icon: "chat", + Variant: ui.IconButtonVariantNeutral, + Tone: ui.IconButtonToneGhost, + Type: "button", + }) - + @ui.Button(ui.ButtonProps{ + Label: "Invite Member", + Variant: ui.ButtonVariantDefault, + Tone: ui.ButtonToneSoft, + Size: ui.SizeMD, + Type: "button", + })
- @TabloDeleteButtonFragment(tablo, csrfToken) + @ui.IconButton(ui.IconButtonProps{ + Label: "Delete tablo", + Icon: "trash", + Variant: ui.IconButtonVariantDanger, + Tone: ui.IconButtonToneGhost, + Type: "button", + Attrs: templ.Attributes{ + "hx-get": "/tablos/" + tablo.ID.String() + "/delete-confirm", + "hx-target": "closest .tablo-delete-zone", + "hx-swap": "outerHTML", + }, + })
-
-
- - Created - { tablo.CreatedAt.Time.Format("Jan 2, 2006") } +
-
-