this repo has no description
0
fork

Configure Feed

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

Work on the overflows and dateclasses

+67 -96
+8 -4
client/app.css
··· 92 92 } 93 93 94 94 @layer base { 95 + /* HTML overflow hidden */ 96 + html { 97 + overflow: clip; 98 + } 95 99 /*Pride month banner*/ 96 - body:has(.monthclass-6)::before { 100 + body:has(.monthclass-6) main::before { 97 101 margin: 0; 98 102 content: "Happy Pride Month! 💖🏳️‍🌈"; 99 103 justify-content: center; ··· 125 129 --bs: 300% 100%; 126 130 } 127 131 128 - body:has(.monthclass-6):hover::before { 132 + body:has(.monthclass-6) main:hover::before { 129 133 animation: prideBannerAnimation 10s linear infinite; 130 134 } 131 135 ··· 170 174 } 171 175 } 172 176 173 - body:has(.monthclass-6):active::before { 177 + body:has(.monthclass-6):active main::before { 174 178 animation: none; 175 179 animation-delay: 3s; 176 180 animation-duration: 999s; ··· 200 204 } 201 205 202 206 /*29th of februari is nonexistent in non-leap years*/ 203 - body:has(.dayclass-29.monthclass-2)::before { 207 + body:has(.dayclass-29.monthclass-2) main::before { 204 208 margin-top: 0.8em; 205 209 margin-bottom: 0.8em; 206 210 content: "[This day does not exist]";
+1
client/gleam.toml
··· 9 9 lustre_websocket = ">= 0.9.0 and < 1.0.0" 10 10 gleamy_lights = ">= 2.3.0 and < 3.0.0" 11 11 plinth = ">= 0.5.9 and < 1.0.0" 12 + gleam_time = ">= 1.4.0 and < 2.0.0" 12 13 13 14 [dev-dependencies] 14 15 gleeunit = "~> 1.0"
+17 -88
client/manifest.toml
··· 2 2 # You typically do not need to edit this file 3 3 4 4 packages = [ 5 - { name = "conversation", version = "2.0.1", build_tools = [ 6 - "gleam", 7 - ], requirements = [ 8 - "gleam_http", 9 - "gleam_javascript", 10 - "gleam_stdlib", 11 - ], otp_app = "conversation", source = "hex", outer_checksum = "103DF47463B8432AB713D6643DC17244B9C82E2B172A343150805129FE584A2F" }, 12 - { name = "envoy", version = "1.0.2", build_tools = [ 13 - "gleam", 14 - ], requirements = [ 15 - "gleam_stdlib", 16 - ], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" }, 17 - { name = "gleam_community_colour", version = "2.0.1", build_tools = [ 18 - "gleam", 19 - ], requirements = [ 20 - "gleam_json", 21 - "gleam_stdlib", 22 - ], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "F0ACE69E3A47E913B03D3D0BB23A5563A91A4A7D20956916286068F4A9F817FE" }, 23 - { name = "gleam_erlang", version = "0.34.0", build_tools = [ 24 - "gleam", 25 - ], requirements = [ 26 - "gleam_stdlib", 27 - ], otp_app = "gleam_erlang", source = "hex", outer_checksum = "0C38F2A128BAA0CEF17C3000BD2097EB80634E239CE31A86400C4416A5D0FDCC" }, 28 - { name = "gleam_http", version = "3.7.2", build_tools = [ 29 - "gleam", 30 - ], requirements = [ 31 - "gleam_stdlib", 32 - ], otp_app = "gleam_http", source = "hex", outer_checksum = "8A70D2F70BB7CFEB5DF048A2183FFBA91AF6D4CF5798504841744A16999E33D2" }, 33 - { name = "gleam_javascript", version = "1.0.0", build_tools = [ 34 - "gleam", 35 - ], requirements = [ 36 - "gleam_stdlib", 37 - ], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, 38 - { name = "gleam_json", version = "2.3.0", build_tools = [ 39 - "gleam", 40 - ], requirements = [ 41 - "gleam_stdlib", 42 - ], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" }, 43 - { name = "gleam_otp", version = "0.16.1", build_tools = [ 44 - "gleam", 45 - ], requirements = [ 46 - "gleam_erlang", 47 - "gleam_stdlib", 48 - ], otp_app = "gleam_otp", source = "hex", outer_checksum = "50DA1539FC8E8FA09924EB36A67A2BBB0AD6B27BCDED5A7EF627057CF69D035E" }, 49 - { name = "gleam_stdlib", version = "0.59.0", build_tools = [ 50 - "gleam", 51 - ], requirements = [ 52 - ], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F8FEE9B35797301994B81AF75508CF87C328FE1585558B0FFD188DC2B32EAA95" }, 53 - { name = "gleamy_lights", version = "2.3.1", build_tools = [ 54 - "gleam", 55 - ], requirements = [ 56 - "envoy", 57 - "gleam_community_colour", 58 - "gleam_stdlib", 59 - ], otp_app = "gleamy_lights", source = "hex", outer_checksum = "CD89DD48BBCD8FBB6B8CB84101C70221CBFB901F711C3C7F81F47288EC8074FD" }, 60 - { name = "gleeunit", version = "1.3.1", build_tools = [ 61 - "gleam", 62 - ], requirements = [ 63 - "gleam_stdlib", 64 - ], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" }, 65 - { name = "houdini", version = "1.1.0", build_tools = [ 66 - "gleam", 67 - ], requirements = [ 68 - "gleam_stdlib", 69 - ], otp_app = "houdini", source = "hex", outer_checksum = "5BA517E5179F132F0471CB314F27FE210A10407387DA1EA4F6FD084F74469FC2" }, 70 - { name = "lustre", version = "5.0.3", build_tools = [ 71 - "gleam", 72 - ], requirements = [ 73 - "gleam_erlang", 74 - "gleam_json", 75 - "gleam_otp", 76 - "gleam_stdlib", 77 - "houdini", 78 - ], otp_app = "lustre", source = "hex", outer_checksum = "0BB69D69A9E75E675AA2C32A4A0E5086041D037829FC8AD385BA6A59E45A60A2" }, 79 - { name = "lustre_websocket", version = "0.9.0", build_tools = [ 80 - "gleam", 81 - ], requirements = [ 82 - "gleam_stdlib", 83 - "lustre", 84 - ], otp_app = "lustre_websocket", source = "hex", outer_checksum = "7C986F711ACCF7F4EF4C24BDE0BE1D25D805A92ED3BFFE10BE61EBE1E92065D6" }, 85 - { name = "plinth", version = "0.5.9", build_tools = [ 86 - "gleam", 87 - ], requirements = [ 88 - "conversation", 89 - "gleam_javascript", 90 - "gleam_json", 91 - "gleam_stdlib", 92 - ], otp_app = "plinth", source = "hex", outer_checksum = "9684C5D768F99B34537B48B100509389C45D2E7C045426E93ACB250993611724" }, 5 + { name = "conversation", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_javascript", "gleam_stdlib"], otp_app = "conversation", source = "hex", outer_checksum = "103DF47463B8432AB713D6643DC17244B9C82E2B172A343150805129FE584A2F" }, 6 + { name = "envoy", version = "1.0.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "envoy", source = "hex", outer_checksum = "95FD059345AA982E89A0B6E2A3BF1CF43E17A7048DCD85B5B65D3B9E4E39D359" }, 7 + { name = "gleam_community_colour", version = "2.0.1", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "F0ACE69E3A47E913B03D3D0BB23A5563A91A4A7D20956916286068F4A9F817FE" }, 8 + { name = "gleam_erlang", version = "0.34.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_erlang", source = "hex", outer_checksum = "0C38F2A128BAA0CEF17C3000BD2097EB80634E239CE31A86400C4416A5D0FDCC" }, 9 + { name = "gleam_http", version = "3.7.2", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_http", source = "hex", outer_checksum = "8A70D2F70BB7CFEB5DF048A2183FFBA91AF6D4CF5798504841744A16999E33D2" }, 10 + { name = "gleam_javascript", version = "1.0.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_javascript", source = "hex", outer_checksum = "EF6C77A506F026C6FB37941889477CD5E4234FCD4337FF0E9384E297CB8F97EB" }, 11 + { name = "gleam_json", version = "2.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "C55C5C2B318533A8072D221C5E06E5A75711C129E420DD1CE463342106012E5D" }, 12 + { name = "gleam_otp", version = "0.16.1", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_stdlib"], otp_app = "gleam_otp", source = "hex", outer_checksum = "50DA1539FC8E8FA09924EB36A67A2BBB0AD6B27BCDED5A7EF627057CF69D035E" }, 13 + { name = "gleam_stdlib", version = "0.59.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "F8FEE9B35797301994B81AF75508CF87C328FE1585558B0FFD188DC2B32EAA95" }, 14 + { name = "gleam_time", version = "1.4.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_time", source = "hex", outer_checksum = "DCDDC040CE97DA3D2A925CDBBA08D8A78681139745754A83998641C8A3F6587E" }, 15 + { name = "gleamy_lights", version = "2.3.1", build_tools = ["gleam"], requirements = ["envoy", "gleam_community_colour", "gleam_stdlib"], otp_app = "gleamy_lights", source = "hex", outer_checksum = "CD89DD48BBCD8FBB6B8CB84101C70221CBFB901F711C3C7F81F47288EC8074FD" }, 16 + { name = "gleeunit", version = "1.3.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "A7DD6C07B7DA49A6E28796058AA89E651D233B357D5607006D70619CD89DAAAB" }, 17 + { name = "houdini", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "houdini", source = "hex", outer_checksum = "5BA517E5179F132F0471CB314F27FE210A10407387DA1EA4F6FD084F74469FC2" }, 18 + { name = "lustre", version = "5.0.3", build_tools = ["gleam"], requirements = ["gleam_erlang", "gleam_json", "gleam_otp", "gleam_stdlib", "houdini"], otp_app = "lustre", source = "hex", outer_checksum = "0BB69D69A9E75E675AA2C32A4A0E5086041D037829FC8AD385BA6A59E45A60A2" }, 19 + { name = "lustre_websocket", version = "0.9.0", build_tools = ["gleam"], requirements = ["gleam_stdlib", "lustre"], otp_app = "lustre_websocket", source = "hex", outer_checksum = "7C986F711ACCF7F4EF4C24BDE0BE1D25D805A92ED3BFFE10BE61EBE1E92065D6" }, 20 + { name = "plinth", version = "0.5.9", build_tools = ["gleam"], requirements = ["conversation", "gleam_javascript", "gleam_json", "gleam_stdlib"], otp_app = "plinth", source = "hex", outer_checksum = "9684C5D768F99B34537B48B100509389C45D2E7C045426E93ACB250993611724" }, 93 21 ] 94 22 95 23 [requirements] 96 24 gleam_json = { version = "2.3.0" } 97 25 gleam_stdlib = { version = "0.59.0" } 26 + gleam_time = { version = ">= 1.4.0 and < 2.0.0" } 98 27 gleamy_lights = { version = ">= 2.3.0 and < 3.0.0" } 99 28 gleeunit = { version = "~> 1.0" } 100 29 lustre = { version = ">= 5.0.3 and < 6.0.0" }
+40 -2
client/src/lumina_client/view.gleam
··· 2 2 3 3 import gleam/bool 4 4 import gleam/dynamic/decode 5 + import gleam/int 5 6 import gleam/option 6 7 import gleam/result 7 8 import gleam/string 9 + import gleam/time/calendar 10 + import gleam/time/timestamp 8 11 import lumina_client/helpers.{ 9 12 get_color_scheme, login_view_checker, model_local_storage_key, 10 13 } ··· 21 24 import lustre/element.{type Element} 22 25 import lustre/element/html 23 26 import lustre/event 27 + import plinth/javascript/date 24 28 import plinth/javascript/storage 25 29 26 30 pub fn view(model: Model) -> Element(Msg) { ··· 485 489 attribute.type_("checkbox"), 486 490 attribute.id("my-drawer-2"), 487 491 ]), 488 - html.div( 492 + html.main( 489 493 [ 490 494 attribute.class( 491 - "drawer-content items-center flex flex-col bg-neutral text-neutral-content h-screen max-h-[calc(100vh-4rem)]", 495 + "drawer-content items-center flex flex-col bg-neutral text-neutral-content h-screen max-h-[calc(100vh-4rem)]" 496 + <> { 497 + let rn = timestamp.system_time() 498 + let #(calendar.Date(year, month, day), _) = 499 + timestamp.to_calendar(rn, calendar.local_offset()) 500 + // TODO: Actual date classes: 501 + " " 502 + <> { 503 + // Year 504 + "yearclass-" <> int.to_string(year) 505 + } 506 + <> " " 507 + <> { 508 + // Month 509 + case month { 510 + calendar.January -> "monthclass-1" 511 + calendar.February -> "monthclass-2" 512 + calendar.March -> "monthclass-3" 513 + calendar.April -> "monthclass-4" 514 + calendar.May -> "monthclass-5" 515 + calendar.June -> "monthclass-6" 516 + calendar.July -> "monthclass-7" 517 + calendar.August -> "monthclass-8" 518 + calendar.September -> "monthclass-9" 519 + calendar.October -> "monthclass-10" 520 + calendar.November -> "monthclass-11" 521 + calendar.December -> "monthclass-12" 522 + } 523 + } 524 + <> " " 525 + <> { 526 + // Day 527 + "dayclass-" <> int.to_string(day) 528 + } 529 + }, 492 530 ), 493 531 ], 494 532 [homepage.timeline(model)],
+1 -2
server/src/staticroutes.rs
··· 34 34 <script type="module" src="/static/lumina.min.mjs"></script> 35 35 </head> 36 36 37 - <body> 38 - <div id="app"></div> 37 + <body id="app"> 39 38 </body> 40 39 </html>"# 41 40 .to_string(),