╭ changed ──────────────────╮ │src/ui/Repo/Discussions.zig│ ╰───────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │265 var header = try Header.init(allocator); │ │266 errdefer header.deinit(allocator); │ │267 const aa = session.page_arena.allocator(); │ │268 + const selected_index = View.viewIndex(data.view); │ │269 + const page_selected = std.meta.activeTag(session.data.current_page) == .repo_discussions;│ │270 │ │271 // recent discussions │ │272 { │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │273 const route = ui.RoutablePage.repoDiscussionsRoute(data.identity, data.tag, "") orelse return error.RouteTooLong;│ │272 - const link = try std.fmt.allocPrint(aa, "ai:{s}", .{try route.toUrl(session.page_arena)}); │ │274 + const link = try ui.inPageTabLink(session, route, page_selected and selected_index == 0); │ │275 var label_buf: [64]u8 = undefined; │ │276 const label = try std.fmt.bufPrint(&label_buf, "recent ({d})", .{data.recent.count}); │ │277 try header.addTab(allocator, label, link, 0); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │280 // tags tab, labeled with the active tag filter │ │281 { │ │282 const tags_route = ui.RoutablePage.repoThreadTagsRoute(.discuss, data.identity, data.tag) orelse return error.RouteTooLong;│ │281 - const tags_link = try std.fmt.allocPrint(aa, "ai:{s}", .{try tags_route.toUrl(session.page_arena)}); │ │283 + const tags_link = try ui.inPageTabLink(session, tags_route, page_selected and selected_index == View.viewIndex(.tags)); │ │284 const label = if (data.tag.len == 0) "tags" else blk: { │ │285 const decoded = std.Uri.percentDecodeInPlace(try aa.dupe(u8, data.tag)); │ │286 break :blk try std.fmt.allocPrint(aa, "tags ({s})", .{decoded}); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │297 .remove => ui.RoutablePage.repoThreadRemoveRoute(.discuss, data.identity, data.selected_id, data.comment_id) orelse return error.RouteTooLong,│ │298 else => ui.RoutablePage.repoThreadNewRoute(.discuss, data.identity) orelse return error.RouteTooLong, │ │299 }; │ │298 - const link = try std.fmt.allocPrint(aa, "ai:{s}", .{try route.toUrl(session.page_arena)}); │ │300 + const link = try ui.inPageTabLink(session, route, page_selected and selected_index == View.viewIndex(.new)); │ │301 const label: []const u8 = switch (data.view) { │ │302 .edit => "edit", │ │303 .new_comment => "reply", │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯