╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ───────────╮ │src/ui/UserLogin.zig│ ╰────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │ 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 "; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/UserLogout.zig│ ╰─────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │28 │ │29 pub fn init(allocator: std.mem.Allocator, session: *ui.Session) !View { │ │30 // the form box makes the web renderer post the button to /logout │ │31 - var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert });│ │31 + var box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │32 errdefer box.deinit(allocator); │ │33 box.getFocus().kind = .{ .custom = "form:logout" }; │ │34 │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │35 - var button = try wgt.TextBox.init(allocator, "logout", .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │35 + var button = try wgt.TextBox.init(allocator, "logout", .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │36 errdefer button.deinit(allocator); │ │37 button.getFocus().mode = .all; │ │38 // the renderer distinguishes plain clickables from buttons that │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────╮ │src/ui/widget.zig│ ╰─────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────╮ │129 // draw a text box as the selected one of its group: bordered and inverted,│ │130 // while the rest stay borderless │ │131 pub fn markSelected(text_box: *wgt.TextBox, selected: bool) void { │ │132 - text_box.options.border_style = if (selected) .single else .hidden; │ │132 + text_box.options.border = if (selected) .single else .hidden; │ │133 text_box.options.invert = selected; │ │134 } │ │135 │ ╰────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │136 pub fn addBackButton(allocator: std.mem.Allocator, box: *wgt.Box(Widget), session: *ui.Session) !void {│ │137 if (!session.is_terminal) return; │ │138 - var back = try wgt.TextBox.init(allocator, "←", .{ .border_style = .hidden, .wrap_kind = .none }); │ │138 + var back = try wgt.TextBox.init(allocator, "←", .{ .border = .hidden, .wrap_kind = .none }); │ │139 errdefer back.deinit(allocator); │ │140 back.getFocus().kind = .{ .custom = back_kind }; │ │141 back.getFocus().mode = .mouse; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │246 // a repo tab's placeholder while the repo has no commits, with the remote to │ │247 // push to for a viewer who can │ │248 pub fn initNoCommits(allocator: std.mem.Allocator, session: *ui.Session, handle: ui.RepoHandle) !Center {│ │249 - var box = try wgt.Box(Widget).init(allocator, .{ .border_style = null, .direction = .vert }); │ │249 + var box = try wgt.Box(Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │250 errdefer box.deinit(allocator); │ │251 │ │252 // built first so the text can center over it │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │268 │ │269 { │ │270 var text_widget: Widget = blk: { │ │271 - var text_box = try wgt.TextBox.init(allocator, "no commits yet", .{ .border_style = null, .wrap_kind = .none }); │ │271 + var text_box = try wgt.TextBox.init(allocator, "no commits yet", .{ .border = null, .wrap_kind = .none }); │ │272 errdefer text_box.deinit(allocator); │ │273 break :blk if (remote_maybe != null) .{ .center = try Center.init(allocator, .{ .text_box = text_box }) } else .{ .text_box = text_box };│ │274 }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │355 self.focus.child_id = null; │ │356 │ │357 for (items) |item| { │ │358 - var text_box = try wgt.TextBox.init(allocator, item.text, .{ .border_style = .hidden, .round_corners = true, .wrap_kind = .word, .bottom_label = try aa.dupe(u8, item.bottom_label) }); │ │358 + var text_box = try wgt.TextBox.init(allocator, item.text, .{ .border = .hidden, .round_corners = true, .wrap_kind = .word, .bottom_label = .{ .text = try aa.dupe(u8, item.bottom_label) } });│ │359 errdefer text_box.deinit(allocator); │ │360 text_box.getFocus().mode = .all; │ │361 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │387 │ │388 // build at the slot size so every text box fits a single grid cell │ │389 for (self.text_boxes.items) |*tb| { │ │390 - tb.options.border_style = if (root_focus.grandchild_id == tb.getFocus().id) .double else .hidden;│ │390 + tb.options.border = if (root_focus.grandchild_id == tb.getFocus().id) .double else .hidden; │ │391 try tb.build(allocator, .{ │ │392 .min_size = .{ .width = cell_width, .height = null }, │ │393 .max_size = .{ .width = cell_width, .height = slot_height }, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │618 self.focus.child_id = null; │ │619 │ │620 for (items) |item| { │ │621 - var text_box = try wgt.TextBox.init(allocator, item.text, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │621 + var text_box = try wgt.TextBox.init(allocator, item.text, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │622 errdefer text_box.deinit(allocator); │ │623 text_box.getFocus().mode = .all; │ │624 │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯