╭ changed ───────────╮ │src/ui/UserLogin.zig│ ╰────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │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 "; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ 99 │ │100 const password_input = &box.children.values()[password_index].widget.text_input;│ │101 - password_input.options.label = if (failure == .wrong_password) │ │101 + password_input.options.top_label.text = if (failure == .wrong_password) │ │102 " password (invalid) " │ │103 else │ │104 " password "; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯