From 7f1f0e1ce092d0d451c603556887ecf9f363d4fd Mon Sep 17 00:00:00 2001 From: Gavin Morrow Date: Tue, 4 Aug 2026 18:59:27 -0400 Subject: [PATCH] Header styling --- assets/style.css | 16 ++++++ src/bag_of_holding.gleam | 121 ++++++++++++++++++--------------------- 2 files changed, 73 insertions(+), 64 deletions(-) diff --git a/assets/style.css b/assets/style.css index 92b1833..a5a21f6 100644 --- a/assets/style.css +++ b/assets/style.css @@ -3,6 +3,22 @@ body { background-color: var(--background-color); } +.header { + display: flex; + align-items: center; +} + +.header h1 { + margin: 0; + flex: 1; +} + +.header h1 input { + appearance: none; + border: none; + font-size: inherit; +} + [role="menu"] { display: none; } diff --git a/src/bag_of_holding.gleam b/src/bag_of_holding.gleam index 3385fe0..c93d82b 100644 --- a/src/bag_of_holding.gleam +++ b/src/bag_of_holding.gleam @@ -293,73 +293,66 @@ fn loaded_view(model: LoadedModel) -> Element(Message) { } }) - html.div([], [ - menu.popup_menu( - "Inventory options", - html.text("v"), - [event.on_click(UserChangedMenuState(!menu_open))], - menu_open, - [ - menu.button( - label: "Create new inventory", - on_click: case creating_inventory { - False -> Ok(UserClickedCreateNewInventory) - True -> Error(Nil) - }, - ), - menu.button( - label: "Delete current inventory", - on_click: case inventories |> dict.size { - size if size >= 2 -> - Ok(UserClickedDeleteInventory(selected_inventory)) - _ -> Error(Nil) - }, - ), - menu.radio( - label: "Inventories", - on_select: fn(selected_inventory) { - UserSelectedInventory(selected_inventory) - }, - options: inventory_names - |> list.map(fn(inventory) { - menu.RadioItem( - label: inventory, - value: inventory, - checked: inventory == selected_inventory, - disabled: False, - ) - }), - ), - ], - ), - case dict.get(model.storage.inventories, selected_inventory) { - Ok(inventory) -> inventory_view(inventory, selected_tab) - Error(Nil) -> element.text("Error: inventory file missing") - }, - ]) -} + let assert Ok(inventory) = + dict.get(model.storage.inventories, selected_inventory) -fn inventory_view( - inventory: Inventory, - selected_tab: String, -) -> Element(Message) { html.main([], [ - html.h1([], [ - html.input([ - attribute.type_("text"), - attribute.minlength(1), - attribute.value(inventory.name), - event.on_change(fn(new_value) { - case new_value { - // TODO: surface the error? - "" -> NoOp - name -> - UserUpdatedInventory(inventory.name, fn(inventory) { - Inventory(..inventory, name:) - }) - } - }), + html.div([attribute.class("header")], [ + html.h1([], [ + html.input([ + attribute.type_("text"), + attribute.minlength(1), + attribute.value(inventory.name), + event.on_change(fn(new_value) { + case new_value { + // TODO: surface the error? + "" -> NoOp + name -> + UserUpdatedInventory(inventory.name, fn(inventory) { + Inventory(..inventory, name:) + }) + } + }), + ]), ]), + menu.popup_menu( + "inventory-options", + html.span([attribute.aria_label("Inventory options")], [html.text("v")]), + [event.on_click(UserChangedMenuState(!menu_open))], + menu_open, + [ + menu.button( + label: "Create new inventory", + on_click: case creating_inventory { + False -> Ok(UserClickedCreateNewInventory) + True -> Error(Nil) + }, + ), + menu.button( + label: "Delete current inventory", + on_click: case inventories |> dict.size { + size if size >= 2 -> + Ok(UserClickedDeleteInventory(selected_inventory)) + _ -> Error(Nil) + }, + ), + menu.radio( + label: "Inventories", + on_select: fn(selected_inventory) { + UserSelectedInventory(selected_inventory) + }, + options: inventory_names + |> list.map(fn(inventory) { + menu.RadioItem( + label: inventory, + value: inventory, + checked: inventory == selected_inventory, + disabled: False, + ) + }), + ), + ], + ), ]), html.label([], [ html.text("Weight limit: "), -- 2.51.2