╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──────╮ │src/ui/Home.zig│ ╰───────────────╯ ╭─────────────────────────────────────────────╮ │18 header: Header, │ │19 about: About, │ │20 users: Users, │ │21 +user_notifications: ui.UserNotifications,│ │22 quit: Quit, │ │23 │ │24 const Self = @This(); │ ╰─────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────╮ │29 haxy_moment: evt.AdminDB.HashMap(.read_only),│ │30 // the users tab's window and search │ │31 users_route: ui.RoutablePage.HomeUsersRoute, │ │32 + user_tab: ui.RoutablePage.UserTab, │ │33 ) !Self { │ │34 const about = try About.init(arena, session);│ │35 return .{ │ ╰─────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────╮ │36 .header = try Header.init(arena, about.title), │ │37 .about = about, │ │38 .users = try Users.init(arena, haxy_moment, users_route), │ │39 + .user_notifications = try ui.UserNotifications.init(arena, session, user_tab),│ │40 .quit = Quit.init(), │ │41 }; │ │42 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │88 } │ │89 │ │90 { │ │88 - var user_view = try ui.UserSettings.initView(allocator, session); │ │91 + var user_view = try ui.UserSettings.initView(allocator, session, &data.user_notifications, .{ .home_user = .{} });│ │92 errdefer user_view.deinit(allocator); │ │93 try stack.children.put(allocator, user_view.getFocus().id, user_view); │ │94 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │157 .home_header => { │ │158 if (stack.getSelected()) |selected_widget| switch (selected_widget.*) {│ │159 .home_users => |*v| return v.focusHeader(root_focus), │ │160 + .user_notifications => |*v| if (v.focusHeader(root_focus)) return, │ │161 else => {}, │ │162 }; │ │163 index = stack_index; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Home/Header.zig│ ╰──────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │93 const users_link = try ui.inPageTabLink(session, .{ .home_users = .{} }, current_tag == .home_users);│ │94 const new_repo_link = try ui.inPageTabLink(session, .home_repo_new, current_tag == .home_repo_new); │ │95 const new_user_link = try ui.inPageTabLink(session, .home_user_new, current_tag == .home_user_new); │ │96 - const user_link = try ui.inPageTabLink(session, .home_user, current_tag == .home_user); │ │96 + const user_link = try ui.inPageTabLink(session, .{ .home_user = .{} }, current_tag == .home_user); │ │97 const current_link: []const u8 = switch (current_tag) { │ │98 .home_users => users_link, │ │99 .home_repo_new => new_repo_link, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │175 // user tab │ │176 { │ │177 const label = ui.UserSettings.tabLabel(session); │ │178 - var text_box = try wgt.TextBox.init(allocator, label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │178 + const count_label = try ui.UserSettings.tabBottomLabel(session); │ │179 + var text_box = try wgt.TextBox.init(allocator, label, .{ .border = .single, .round_corners = true, .wrap_kind = .none, .bottom_label = .{ .text = count_label } });│ │180 errdefer text_box.deinit(allocator); │ │181 text_box.getFocus().mode = .all; │ │182 text_box.getFocus().kind = .{ .custom = user_link }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────╮ │185 try tabs_box.children.put(allocator, text_box.getFocus().id, .{ │ │186 .widget = .{ .text_box = text_box }, │ │187 .rect = null, │ │187 - .min_size = .{ .width = label.len + 2, .height = null }, │ │188 + .min_size = .{ .width = @max(label.len, count_label.len) + 2, .height = null },│ │189 }); │ │190 } │ │191 │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Repo.zig│ ╰───────────────╯ ╭───────────────────────────────────────────╮ │1 const std = @import("std"); │ │2 const evt = @import("../event.zig"); │ │3 const pch = @import("../patch.zig"); │ │4 +const notify = @import("../notify.zig");│ │5 const ui = @import("../ui.zig"); │ │6 const xit = @import("xit"); │ │7 const rp = xit.repo; │ ╰───────────────────────────────────────────╯ ╭────────────────────────────────╮ │ 8 +const hash = xit.hash; │ │ 9 const xitui = xit.xitui; │ │10 const wgt = xitui.widget; │ │11 const layout = xitui.layout;│ ╰────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯