╭ changed ────────────╮ │src/ui/Home/Users.zig│ ╰─────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 83 // a leading "previous" row off the first window, one row per user, then │ │ 84 // a trailing "next" row when more remain. each window row navigates to the │ │ 85 // adjacent window (full reload on web, Nav rebuild on the TUI). │ │ 86 - const lead: usize = if (data.after > 0) 1 else 0; │ │ 87 - const trail: usize = if (data.next_after != null) 1 else 0; │ │ 88 - const lines = try aa.alloc([]const u8, lead + data.users.len + trail); │ │ 89 - const links = try aa.alloc([]const u8, lead + data.users.len + trail); │ │ 90 - if (data.after > 0) { │ │ 91 - lines[0] = "← previous"; │ │ 92 - links[0] = try std.fmt.allocPrint(aa, "a:/users?after={d}", .{data.after -| page_size}); │ │ 93 - } │ │ 94 - for (data.users, 0..) |user, i| { │ │ 95 - lines[lead + i] = try std.fmt.allocPrint(aa, "{s} ({s})", .{ user.name, user.display_name }); │ │ 86 + var items: std.ArrayList(ui.FlowBox.Item) = .empty; │ │ 87 + if (data.after > 0) │ │ 88 + try items.append(aa, .{ .text = "← previous", .link = try std.fmt.allocPrint(aa, "a:/users?after={d}", .{data.after -| page_size}) });│ │ 89 + for (data.users) |user| │ │ 90 // clicking a user opens their page; the "a:" prefix makes the web │ │ 91 // renderer emit an <a href="/user/foo"> anchor. │ │ 98 - links[lead + i] = try std.fmt.allocPrint(aa, "a:/user/{s}", .{user.name}); │ │ 99 - } │ │100 - if (data.next_after) |next_after| { │ │101 - lines[lead + data.users.len] = "next →"; │ │102 - links[lead + data.users.len] = try std.fmt.allocPrint(aa, "a:/users?after={d}", .{next_after}); │ │103 - } │ │104 - try self.list.setItems(allocator, lines, links); │ │ 92 + try items.append(aa, .{ │ │ 93 + .text = try std.fmt.allocPrint(aa, "{s} ({s})", .{ user.name, user.display_name }), │ │ 94 + .link = try std.fmt.allocPrint(aa, "a:/user/{s}", .{user.name}), │ │ 95 + }); │ │ 96 + if (data.next_after) |next_after| │ │ 97 + try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:/users?after={d}", .{next_after}) }); │ │ 98 + try self.list.setItems(allocator, items.items); │ │ 99 │ │100 return self; │ │101 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯