๐Ÿ‘ฉโ€๐Ÿš’ Firefighters API written in Gleam!
lustre gleam

:lipstick: add nerd icons <3

kacaii.dev ab4de27c c521fad9

verified
+29 -9
+2 -1
client/assets/style.css
··· 1 - @import "output.css" 1 + @import "output.css"; 2 + @import "https://www.nerdfonts.com/assets/css/webfont.css";
+7 -2
client/src/client/page/element/header.gleam
··· 1 + import client/page/element/nerd_font 1 2 import lustre/attribute.{class} as attr 2 3 import lustre/element 3 4 import lustre/element/html ··· 20 21 } 21 22 22 23 fn logo() -> element.Element(_) { 23 - let style = class("font-black text-accent") 24 - html.h3([style], [html.text("SIGO")]) 24 + let attributes = [ 25 + class("px-2 font-black text-accent"), 26 + class("flex gap-2 justify-center items-center"), 27 + ] 28 + 29 + html.h3(attributes, [nerd_font.icon("md-fire_truck"), html.text("SIGO")]) 25 30 } 26 31 27 32 fn anchor(session: session.Session) -> element.Element(_) {
+8
client/src/client/page/element/nerd_font.gleam
··· 1 + import lustre/attribute.{class} 2 + import lustre/element 3 + import lustre/element/html 4 + 5 + pub fn icon(icon: String) -> element.Element(_) { 6 + let glyph = "nf nf-" <> icon 7 + html.i([class(glyph)], []) 8 + }
+10 -5
client/src/client/page/login.gleam
··· 1 + import client/page/element/nerd_font 1 2 import gleam/string 2 3 import lustre/attribute.{class} as attr 3 4 import lustre/effect ··· 76 77 class("flex justify-center items-center mx-auto max-w-2xl h-full") 77 78 78 79 let container_attr = [ 79 - class("grid grid-cols-1 gap-4 items-center"), 80 + class("grid grid-cols-1 gap-2 items-center"), 80 81 class("p-4 m-auto w-full max-w-md"), 81 82 class("rounded-md border border-surface"), 82 83 ] ··· 96 97 97 98 fn button(model: Model) -> element.Element(Msg) { 98 99 let attributes = [ 100 + class("flex gap-2 justify-center items-center"), 99 101 class("p-2 text-white rounded-md bg-secondary"), 100 102 class("hover:cursor-pointer hover:bg-accent hover:text-primary"), 101 103 ··· 107 109 event.on_click(UserSentRequest), 108 110 ] 109 111 110 - html.button(attributes, [html.text("Login")]) 112 + html.button(attributes, [ 113 + nerd_font.icon("md-database_search"), 114 + html.text("Login"), 115 + ]) 111 116 } 112 117 113 118 fn message_text(model: Model) -> element.Element(Msg) { ··· 124 129 value: model.email, 125 130 disabled: False, 126 131 on_input: UserUpdatedLoginField, 127 - input_type: "text", 132 + input_type: "email", 128 133 ), 129 134 130 135 input( ··· 148 153 class("px-2 w-full text-white bg-primary"), 149 154 class("rounded-md border border-surface"), 150 155 class("placeholder:text-surface"), 151 - class("focus:outline-0 focus:border-sky-500"), 156 + class("focus:outline-0 focus:border-accent"), 152 157 class("disabled:bg-surface disabled:placeholder:text-primary"), 153 - attr.disabled(disabled), 154 158 159 + attr.disabled(disabled), 155 160 attr.placeholder(text), 156 161 attr.value(value), 157 162 event.on_input(on_input),
+2 -1
server/priv/static/style.css
··· 1 - @import "output.css" 1 + @import "output.css"; 2 + @import "https://www.nerdfonts.com/assets/css/webfont.css";