╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─────────────╮ │src/ui/User/Header.zig│ ╰──────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │134 │ │135 // forks tab │ │136 { │ │137 - var text_box = try wgt.TextBox.init(allocator, forks_tab_label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │137 + var text_box = try wgt.TextBox.init(allocator, forks_tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │138 errdefer text_box.deinit(allocator); │ │139 text_box.getFocus().mode = .all; │ │140 text_box.getFocus().kind = .{ .custom = forks_link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │161 │ │162 // new repo tab with a login, new user tab without one │ │163 if (session.data.user_id != null) { │ │164 - var text_box = try wgt.TextBox.init(allocator, new_tab_label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none, .bottom_label = new_repo_tab_bottom_label }); │ │164 + var text_box = try wgt.TextBox.init(allocator, new_tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none, .bottom_label = .{ .text = new_repo_tab_bottom_label } });│ │165 errdefer text_box.deinit(allocator); │ │166 text_box.getFocus().mode = .all; │ │167 text_box.getFocus().kind = .{ .custom = new_repo_link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │173 .min_size = .{ .width = @max(new_tab_label.len, new_repo_tab_bottom_label.len) + 2, .height = null }, │ │174 }); │ │175 } else { │ │176 - var text_box = try wgt.TextBox.init(allocator, new_tab_label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none, .bottom_label = new_user_tab_bottom_label }); │ │176 + var text_box = try wgt.TextBox.init(allocator, new_tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none, .bottom_label = .{ .text = new_user_tab_bottom_label } });│ │177 errdefer text_box.deinit(allocator); │ │178 text_box.getFocus().mode = .all; │ │179 text_box.getFocus().kind = .{ .custom = new_user_link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │189 // user tab │ │190 { │ │191 const label = ui.UserLogout.tabLabel(session); │ │192 - var text_box = try wgt.TextBox.init(allocator, label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │192 + var text_box = try wgt.TextBox.init(allocator, label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │193 errdefer text_box.deinit(allocator); │ │194 text_box.getFocus().mode = .all; │ │195 text_box.getFocus().kind = .{ .custom = user_link }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │204 │ │205 // quit tab │ │206 if (session.is_terminal) { │ │207 - var text_box = try wgt.TextBox.init(allocator, ui.Quit.tab_label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │207 + var text_box = try wgt.TextBox.init(allocator, ui.Quit.tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │208 errdefer text_box.deinit(allocator); │ │209 text_box.getFocus().mode = .all; │ │210 text_box.getFocus().kind = .{ .custom = ui.Quit.tab_kind }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ───────────╮ │src/ui/UserLogin.zig│ ╰────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │26 const button_index: usize = 2; │ │27 │ │28 pub fn init(allocator: std.mem.Allocator, session: *ui.Session) !View { │ │29 - var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .round_corners = true, .direction = .vert });│ │29 + var box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .round_corners = true, .direction = .vert }); │ │30 errdefer box.deinit(allocator); │ │31 // marks this subtree as an HTML form scope for the web renderer │ │32 box.getFocus().kind = .{ .custom = "form:login" }; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │34 var nav_ids: [3]usize = undefined; │ │35 │ │36 { │ │37 - var username = try wgt.TextInput.init(allocator, .{ .label = " username ", .name = "username", .round_corners = true, .render_content = session.is_terminal }); │ │37 + var username = try wgt.TextInput.init(allocator, .{ .top_label = .{ .text = " username " }, .name = "username", .round_corners = true, .render_content = session.is_terminal });│ │38 errdefer username.deinit(allocator); │ │39 username.getFocus().mode = .all; │ │40 if (session.formFeedback(.login)) |feedback| try username.setContent(allocator, feedback.username); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │47 } │ │48 │ │49 { │ │50 - var password = try wgt.TextInput.init(allocator, .{ .label = " password ", .password = true, .name = "password", .round_corners = true, .render_content = session.is_terminal }); │ │50 + var password = try wgt.TextInput.init(allocator, .{ .top_label = .{ .text = " password " }, .password = true, .name = "password", .round_corners = true, .render_content = session.is_terminal });│ │51 errdefer password.deinit(allocator); │ │52 password.getFocus().mode = .all; │ │53 nav_ids[password_index] = password.getFocus().id; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │59 } │ │60 │ │61 { │ │62 - var button = try wgt.TextBox.init(allocator, "login", .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │62 + var button = try wgt.TextBox.init(allocator, "login", .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │63 errdefer button.deinit(allocator); │ │64 button.getFocus().mode = .all; │ │65 // the renderer distinguishes plain clickables from buttons that │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │92 const failure = if (self.session.formFeedback(.login)) |feedback| feedback.failure else null;│ │93 │ │94 const username_input = &box.children.values()[username_index].widget.text_input; │ │95 - username_input.options.label = if (failure == .unknown_user) │ │95 + username_input.options.top_label.text = if (failure == .unknown_user) │ │96 " username (invalid) " │ │97 else │ │98 " username "; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯