╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─────────────╮ │src/ui/Home/Header.zig│ ╰──────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │147 │ │148 // new repo tab with a login, new user tab without one │ │149 if (session.data.user_id != null) { │ │150 - 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 }); │ │150 + 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 } });│ │151 errdefer text_box.deinit(allocator); │ │152 text_box.getFocus().mode = .all; │ │153 text_box.getFocus().kind = .{ .custom = new_repo_link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │159 .min_size = .{ .width = @max(new_tab_label.len, new_repo_tab_bottom_label.len) + 2, .height = null }, │ │160 }); │ │161 } else { │ │162 - 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 }); │ │162 + 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 } });│ │163 errdefer text_box.deinit(allocator); │ │164 text_box.getFocus().mode = .all; │ │165 text_box.getFocus().kind = .{ .custom = new_user_link }; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │175 // user tab │ │176 { │ │177 const label = ui.UserLogout.tabLabel(session); │ │178 - var text_box = try wgt.TextBox.init(allocator, label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │178 + var text_box = try wgt.TextBox.init(allocator, label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │179 errdefer text_box.deinit(allocator); │ │180 text_box.getFocus().mode = .all; │ │181 text_box.getFocus().kind = .{ .custom = user_link }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │190 │ │191 // quit tab │ │192 if (session.is_terminal) { │ │193 - var text_box = try wgt.TextBox.init(allocator, ui.Quit.tab_label, .{ .border_style = .single, .round_corners = true, .wrap_kind = .none });│ │193 + var text_box = try wgt.TextBox.init(allocator, ui.Quit.tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none }); │ │194 errdefer text_box.deinit(allocator); │ │195 text_box.getFocus().mode = .all; │ │196 text_box.getFocus().kind = .{ .custom = ui.Quit.tab_kind }; │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ────────────╮ │src/ui/Home/Users.zig│ ╰─────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │70 const list_index = 1; │ │71 │ │72 pub fn init(allocator: std.mem.Allocator, data: *const Self, session: *ui.Session) !View { │ │73 - var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert });│ │73 + var box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │74 errdefer box.deinit(allocator); │ │75 │ │76 { │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │77 - var header = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .horiz }); │ │77 + var header = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .horiz }); │ │78 errdefer header.deinit(allocator); │ │79 { │ │80 var search_box = try ui.widget.SearchBox.init(allocator, session, " search ", "search", data.search);│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────╮ │src/ui/NewRepo.zig│ ╰──────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │22 │ │23 // `route` is the page's own new-repo route, which the web form posts to │ │24 pub fn init(allocator: std.mem.Allocator, session: *ui.Session, route: ui.RoutablePage) !View { │ │25 - var box = try wgt.Box(ui.Widget).init(allocator, .{ .border_style = null, .direction = .vert }); │ │25 + var box = try wgt.Box(ui.Widget).init(allocator, .{ .border = null, .direction = .vert }); │ │26 errdefer box.deinit(allocator); │ │27 box.getFocus().kind = .{ .custom = try session.page_arena.allocator().print("form:{s}", .{try route.toUrl(session.page_arena)}) };│ │28 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │29 const saved_fields = if (session.formFeedback(.repo)) |saved| saved.fields else null; │ │30 │ │31 { │ │32 - var name = try wgt.TextInput.init(allocator, .{ .label = " name ", .name = "name", .visible_width = 30, .round_corners = true, .render_content = session.is_terminal }); │ │32 + var name = try wgt.TextInput.init(allocator, .{ .top_label = .{ .text = " name " }, .name = "name", .visible_width = 30, .round_corners = true, .render_content = session.is_terminal });│ │33 errdefer name.deinit(allocator); │ │34 name.getFocus().mode = .all; │ │35 if (saved_fields) |saved| try name.setContent(allocator, saved.name); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │38 } │ │39 │ │40 { │ │41 - var description = try wgt.TextInput.init(allocator, .{ .label = " description ", .name = "description", .visible_width = 30, .round_corners = true, .render_content = session.is_terminal }); │ │41 + var description = try wgt.TextInput.init(allocator, .{ .top_label = .{ .text = " description " }, .name = "description", .visible_width = 30, .round_corners = true, .render_content = session.is_terminal });│ │42 errdefer description.deinit(allocator); │ │43 description.getFocus().mode = .all; │ │44 if (saved_fields) |saved| try description.setContent(allocator, saved.description); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │73 pub fn build(self: *View, allocator: std.mem.Allocator, constraint: layout.Constraint, root_focus: *Focus) !void {│ │74 self.clearGrid(); │ │75 const failure = if (self.session.formFeedback(.repo)) |saved| saved.failure else null; │ │76 - (try formField(self.formBox(), "name")).options.label = if (failure) |value| switch (value) { │ │76 + (try formField(self.formBox(), "name")).options.top_label.text = if (failure) |value| switch (value) { │ │77 .required_name => " name (required) ", │ │78 .invalid_name => " name (invalid) ", │ │79 .name_taken => " name (taken) ", │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯