this repo has no description
lustre frontent oat-ui gleam
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

:lipstick: add toggle button for sidebar

+52 -3
+4
gleam.toml
··· 14 14 [dev_dependencies] 15 15 gleeunit = ">= 1.0.0 and < 2.0.0" 16 16 lustre_dev_tools = ">= 2.3.6 and < 3.0.0" 17 + lucide_lustre = ">= 2.0.3 and < 3.0.0" 18 + 19 + [lucide_lustre] 20 + output_module = "icon" 17 21 18 22 [tools.lustre.html] 19 23 title = "BFD"
+8
justfile
··· 1 1 @_default: 2 2 just --list 3 3 4 + # Start development 5 + dev: 6 + gleam run -m lustre/dev start 7 + 4 8 # Build CSS and JS runtime 5 9 build: 6 10 gleam run -m lustre/dev build 11 + 12 + # Add an SVG icon 13 + add-icon name: 14 + gleam run -m lucide_lustre/add {{ name }}
+7
manifest.toml
··· 8 8 { name = "envoy", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "9C6FBB6BFA02A52798BEEC5977A738CAD6E4A057F4B67FD0C8061AD2502C191A" }, 9 9 { name = "exception", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "exception", source = "hex", outer_checksum = "329D269D5C2A314F7364BD2711372B6F2C58FA6F39981572E5CA68624D291F8C" }, 10 10 { name = "filepath", version = "1.1.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "filepath", source = "hex", outer_checksum = "B06A9AF0BF10E51401D64B98E4B627F1D2E48C154967DA7AF4D0914780A6D40A" }, 11 + { name = "glam", version = "2.0.4", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "glam", source = "hex", outer_checksum = "48A043A12091F93D911C316DD8F7FFD03CD9FF6F50848FC56E359D3C168DF0FA" }, 11 12 { name = "gleam_community_ansi", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_regexp", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "B5AA433AF84313E23FDF90CCFF752B9380FE9FFCE02B2949D49B7AACCC77B16D" }, 12 13 { name = "gleam_community_colour", version = "2.0.4", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "6DB4665555D7D2B27F0EA32EF47E8BEBC4303821765F9C73D483F38EE24894F0" }, 13 14 { name = "gleam_crypto", version = "1.6.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_crypto", source = "hex", outer_checksum = "2DE9E4EF53CF6FEE049D4F765731F7178F7A11AEFAE00EEE63BF7536B354AD3F" }, ··· 21 22 { name = "gleam_regexp", version = "1.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_regexp", source = "hex", outer_checksum = "9C215C6CA84A5B35BB934A9B61A9A306EC743153BE2B0425A0D032E477B062A9" }, 22 23 { name = "gleam_stdlib", version = "1.0.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "960090C2FB391784BB34267B099DC9315CC1B1F6013E7415BC763CEF1905D7D3" }, 23 24 { name = "gleam_time", version = "1.8.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "533D8723774D61AD4998324F5DD1DABDCDBFABAFB9E87CB5D03C6955448FC97D" }, 25 + { name = "gleamyshell", version = "2.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleamyshell", source = "hex", outer_checksum = "9FCDB2E7C2C64CF8973049323586AEE164B72D06EBCE1AFBEA88D7B5E6B88AAE" }, 24 26 { name = "gleeunit", version = "1.10.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "254B697FE72EEAD7BF82E941723918E421317813AC49923EE76A18C788C61E72" }, 25 27 { name = "glint", version = "1.2.1", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "2214C7CEFDE457CEE62140C3D4899B964E05236DA74E4243DFADF4AF29C382BB" }, 26 28 { name = "glisten", version = "9.0.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib", "logging"], otp_app = "glisten", source = "hex", outer_checksum = "7795AA50830656F3A0316A6B26595F893C83272DA901B3405E31339CAA31A10B" }, 29 + { name = "globlin", version = "2.0.3", build_tools = ["gleam"], requirements = ["gleam_regexp", "gleam_stdlib"], otp_app = "globlin", source = "hex", outer_checksum = "923BC16814DF95C4BB28111C266F0B873499480E6E125D5A16DBDF732E62CEB4" }, 27 30 { name = "gramps", version = "6.0.1", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_erlang", "gleam_http", "gleam_stdlib"], otp_app = "gramps", source = "hex", outer_checksum = "D55636072DEE173F6586A5679D3C02EC7A0DE3F8646B78C351B72908FF223DF7" }, 28 31 { name = "group_registry", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_otp", "gleam_stdlib"], otp_app = "group_registry", source = "hex", outer_checksum = "BC798A53D6F2406DB94E27CB45C57052CB56B32ACF7CC16EA20F6BAEC7E36B90" }, 29 32 { name = "houdini", version = "1.2.1", build_tools = ["gleam"], requirements = [], otp_app = "houdini", source = "hex", outer_checksum = "6F8AC2F12974567FB744BEA66AC93CEB76AAEA19AD28564623F76CDA9BC26A85" }, 30 33 { name = "hpack_erl", version = "0.3.0", build_tools = ["rebar3"], requirements = [], otp_app = "hpack", source = "hex", outer_checksum = "D6137D7079169D8C485C6962DFE261AF5B9EF60FBC557344511C1E65E3D95FB0" }, 34 + { name = "html_lustre_converter", version = "1.5.1", build_tools = ["gleam"], requirements = ["glam", "gleam_stdlib", "javascript_dom_parser"], otp_app = "html_lustre_converter", source = "hex", outer_checksum = "51842CD85F95E1CF79128CA7B8ED84AF3012CF5B84408F450BB42D6AEACD6698" }, 35 + { name = "javascript_dom_parser", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "javascript_dom_parser", source = "hex", outer_checksum = "0E140ED4E2E0CDE6B747327BA62AA625B275DBD5F5871592AB15F674F7945B0A" }, 31 36 { name = "justin", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "justin", source = "hex", outer_checksum = "8B1C62269E8607D0A0ED698B7903984CE0BF7B6B3C0DEA3C6C8302B39402837B" }, 32 37 { name = "logging", version = "1.5.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "logging", source = "hex", outer_checksum = "BC5F18CE5DD9686100229FE5409BDC3DD5C46D5A7DF2F804AD2D8F0DD6C5060E" }, 38 + { name = "lucide_lustre", version = "2.0.3", build_tools = ["gleam"], requirements = ["argv", "gleam_stdlib", "gleamyshell", "globlin", "html_lustre_converter", "javascript_dom_parser", "lustre", "simplifile", "tom"], otp_app = "lucide_lustre", source = "hex", outer_checksum = "21425974DAECDA4AE1AD468C5B8C92A6AA10D2D9EBD2352B3F3E4C531B76795A" }, 33 39 { name = "lustre", version = "5.6.0", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib", "houdini"], otp_app = "lustre", source = "hex", outer_checksum = "EE558CD4DB9F09FCC16417ADF0183A3C2DAC3E4B21ED3AC0CAE859792AB810CA" }, 34 40 { name = "lustre_dev_tools", version = "2.3.6", build_tools = ["gleam"], requirements = ["argv", "booklet", "filepath", "gleam_community_ansi", "gleam_crypto", "gleam_erlang", "gleam_http", "gleam_httpc", "gleam_json", "gleam_otp", "gleam_regexp", "gleam_stdlib", "glint", "group_registry", "justin", "lustre", "mist", "polly", "simplifile", "tom", "wisp"], otp_app = "lustre_dev_tools", source = "hex", outer_checksum = "7A650A107C7E767D902A8CB608460B927DE0CDD47D5BA04DED71F9F622FE6AD9" }, 35 41 { name = "marceau", version = "1.3.0", build_tools = ["gleam"], requirements = [], otp_app = "marceau", source = "hex", outer_checksum = "2D1C27504BEF45005F5DFB18591F8610FB4BFA91744878210BDC464412EC44E9" }, ··· 50 56 gleam_json = { version = ">= 3.1.0 and < 4.0.0" } 51 57 gleam_stdlib = { version = ">= 0.44.0 and < 2.0.0" } 52 58 gleeunit = { version = ">= 1.0.0 and < 2.0.0" } 59 + lucide_lustre = { version = ">= 2.0.3 and < 3.0.0" } 53 60 lustre = { version = ">= 5.6.0 and < 6.0.0" } 54 61 lustre_dev_tools = { version = ">= 2.3.6 and < 3.0.0" } 55 62 modem = { version = ">= 2.1.2 and < 3.0.0" }
+8 -1
src/client/page/navbar.gleam
··· 1 1 import client/session 2 + import icon 2 3 import lustre/attribute.{class} as attr 3 4 import lustre/element 4 5 import lustre/element/html ··· 6 7 pub type Msg 7 8 8 9 pub fn view(_session: session.Session) -> element.Element(Msg) { 9 - html.nav([attr.data("topnav", ""), class("p-4 border-b")], [ 10 + html.nav([attr.data("topnav", ""), class("p-4 h-full border-b")], [ 11 + // Toggle button 12 + icon.menu([ 13 + class("p-1 text-gray-500 rounded-sm border border-gray-500 size-8"), 14 + attr.data("sidebar-toggle", ""), 15 + ]), 16 + 10 17 html.p([], [html.text("navbar")]), 11 18 ]) 12 19 }
+1 -1
src/client/session.gleam
··· 1 - import gleam/dynamic/decode 2 1 import client/route 3 2 import client/user 3 + import gleam/dynamic/decode 4 4 5 5 pub type Session { 6 6 /// User is sucessfully authenticated
+23
src/icon.gleam
··· 1 + import lustre/attribute.{type Attribute, attribute} 2 + import lustre/element/svg 3 + 4 + pub fn menu(attributes: List(Attribute(a))) { 5 + svg.svg( 6 + [ 7 + attribute("stroke-linejoin", "round"), 8 + attribute("stroke-linecap", "round"), 9 + attribute("stroke-width", "2"), 10 + attribute("stroke", "currentColor"), 11 + attribute("fill", "none"), 12 + attribute("viewBox", "0 0 24 24"), 13 + attribute("height", "24"), 14 + attribute("width", "24"), 15 + ..attributes 16 + ], 17 + [ 18 + svg.path([attribute("d", "M4 5h16")]), 19 + svg.path([attribute("d", "M4 12h16")]), 20 + svg.path([attribute("d", "M4 19h16")]), 21 + ], 22 + ) 23 + }
+1 -1
test/page/login_test.gleam
··· 1 1 import client/page/login 2 + import client/session 2 3 import dummy 3 4 import gleam/list 4 5 import lustre/effect 5 6 import rsvp 6 - import client/session 7 7 8 8 pub fn submit_test() { 9 9 let user_email = "bfd@email.dev"