objective categorical abstract machine language personal data server
65
fork

Configure Feed

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

Don't block center dashboard pages (+ other alignment tweaks)

futurGH 74a4ba03 e536d974

+36 -33
+22 -18
frontend/src/components/AccountSwitcher.mlx
··· 4 4 open React 5 5 module Aria = ReactAria 6 6 7 + let button_class_inline = 8 + "group inline-flex flex-row items-center px-1.5 py-1 -mx-0.75 -my-1 \ 9 + rounded-lg focus-visible:outline-none hover:bg-mist-20/40 \ 10 + active:bg-mist-20/40" 11 + 12 + let button_class_default = 13 + "group min-w-48 flex flex-row items-center gap-x-1 px-2 py-1.5 -mx-2 \ 14 + rounded-lg focus-visible:outline-none hover:bg-mist-20/40 \ 15 + active:bg-mist-20/40" 16 + 17 + let value_class_inline = "text-mana-100 font-serif inline-flex items-center gap-x-1" 18 + 19 + let value_class_default = "text-mana-100 font-serif flex items-center gap-x-1" 20 + 7 21 type actor = 8 22 {did: string; handle: string; avatar_data_uri: string option [@default None]} 9 23 [@@deriving json] 10 24 11 - let fallback handle avatar = 12 - <button className="flex px-2 py-1.5 -mx-2 rounded-lg"> 13 - <span className="text-mana-100 font-serif flex items-center gap-x-1"> 25 + let fallback handle avatar inline = 26 + let button_class = if inline then button_class_inline else button_class_default in 27 + let value_class = if inline then value_class_inline else value_class_default in 28 + <button className=button_class> 29 + <span className=value_class> 14 30 (match avatar with 15 31 | Some uri -> <img className="w-5 h-5 mr-1 rounded-md" src=uri /> 16 32 | None -> null) ··· 50 66 () ) 51 67 else ()] 52 68 in 53 - let button_class = 54 - if inline then 55 - "group inline-flex flex-row items-center px-1.5 py-1 -mx-0.75 -my-1 \ 56 - rounded-lg focus-visible:outline-none hover:bg-mist-20/40 \ 57 - active:bg-mist-20/40" 58 - else 59 - "group min-w-48 flex flex-row items-center gap-x-1 px-2 py-1.5 -mx-2 \ 60 - rounded-lg focus-visible:outline-none hover:bg-mist-20/40 \ 61 - active:bg-mist-20/40" 62 - in 63 - let value_class = 64 - if inline then "text-mana-100 font-serif inline-flex items-center gap-x-1" 65 - else "text-mana-100 font-serif flex items-center gap-x-1" 66 - in 67 - <ClientOnly fallback=(fallback current_user.handle current_user.avatar_data_uri)> 69 + let button_class = if inline then button_class_inline else button_class_default in 70 + let value_class = if inline then value_class_inline else value_class_default in 71 + <ClientOnly fallback=(fallback current_user.handle current_user.avatar_data_uri inline)> 68 72 [%browser_only 69 73 (fun () -> 70 74 <Aria.Select name className="inline" defaultValue=current_user.did placeholder="select account" onChange=handleAccountSwitch>
+1 -1
frontend/src/templates/AccountPage.mlx
··· 78 78 let confirmEmailLoading, setConfirmEmailLoading = useState (fun () -> false) in 79 79 let confirmEmailTokenInput, setConfirmEmailTokenInput = useState (fun () -> "") in 80 80 let successMessage, setSuccessMessage = useState (fun () -> success) in 81 - <div className="w-auto h-auto px-4 sm:px-0 flex flex-col md:flex-row gap-12"> 81 + <div className="w-auto h-full px-4 sm:px-0 pt-16 mx-auto flex flex-col md:flex-row gap-12"> 82 82 <AccountSidebar 83 83 current_user logged_in_users active_page="/account" 84 84 />
+1 -1
frontend/src/templates/AccountPermissionsPage.mlx
··· 67 67 ~props: 68 68 ({current_user; logged_in_users; csrf_token; authorized_apps; devices} : 69 69 props ) () = 70 - <div className="w-auto h-auto px-4 sm:px-0 flex flex-col md:flex-row gap-12"> 70 + <div className="w-auto h-full px-4 sm:px-0 pt-16 mx-auto flex flex-col md:flex-row gap-12"> 71 71 <AccountSidebar 72 72 current_user logged_in_users active_page="/account/permissions" 73 73 />
+1 -1
frontend/src/templates/AdminInvitesPage.mlx
··· 38 38 let editRemaining, setEditRemaining = useState (fun () -> "") in 39 39 (* delete confirmation state *) 40 40 let deleteConfirmFor, setDeleteConfirmFor = useState (fun () -> (None : invite option)) in 41 - <div className="w-full max-w-3xl h-auto px-4 sm:px-0 flex flex-col md:flex-row gap-12"> 41 + <div className="w-full max-w-3xl h-full px-4 sm:px-0 pt-16 mx-auto flex flex-col md:flex-row gap-12"> 42 42 <Sidebar pages=admin_pages active_page="/admin/invites" /> 43 43 <main className="flex-1 w-full max-w-2xl"> 44 44 <h1 className="text-2xl font-serif text-mana-200 mb-1">
+1 -1
frontend/src/templates/AdminLoginPage.mlx
··· 5 5 [@@deriving json] 6 6 7 7 let[@react.component] make ~props:({csrf_token; error} : props) () = 8 - <main className="w-full h-auto max-w-xs px-4 sm:px-0"> 8 + <main className="w-full h-auto max-w-xs px-4 sm:px-0 my-auto"> 9 9 <h1 className="text-2xl font-serif text-mana-200 mb-2">(string "admin")</h1> 10 10 <span className="w-full text-balance text-mist-100"> 11 11 (string "Enter the admin password to continue.")
+1 -1
frontend/src/templates/AdminUsersPage.mlx
··· 62 62 let editValue, setEditValue = useState (fun () -> "") in 63 63 (* delete confirmation state *) 64 64 let deleteConfirmFor, setDeleteConfirmFor = useState (fun () -> (None : actor option)) in 65 - <div className="w-full max-w-3xl h-auto mx-8 px-4 sm:px-0 flex flex-col md:flex-row gap-12"> 65 + <div className="w-full max-w-3xl h-full px-4 sm:px-0 pt-16 mx-auto flex flex-col md:flex-row gap-12"> 66 66 <Sidebar pages=admin_pages active_page="/admin/users" /> 67 67 <main className="flex-1 w-full max-w-2xl"> 68 68 <h1 className="text-2xl font-serif text-mana-200 mb-1">
+2 -3
frontend/src/templates/Layout.mlx
··· 1 1 open React 2 2 3 - let[@react.component] make ?(title = "Pegasus") ?(children = null) 4 - ?(favicon = "/public/favicon.ico") () = 3 + let[@react.component] make ?(title = "Pegasus") ?(children = null) ?(favicon = "/public/favicon.ico") () = 5 4 <html lang="en"> 6 5 <head> 7 6 <meta charSet="utf-8" /> ··· 33 32 </head> 34 33 <body 35 34 className="bg-feather-100 font-sans font-normal text-base tracking-normal"> 36 - <div id="root" className="flex items-center justify-center min-h-screen"> 35 + <div id="root" className="flex justify-center min-h-screen"> 37 36 children 38 37 </div> 39 38 </body>
+1 -1
frontend/src/templates/LoginPage.mlx
··· 9 9 10 10 let[@react.component] make ~props:({redirect_url; csrf_token; error} : props) () 11 11 = 12 - <main className="w-full h-auto max-w-xs px-4 sm:px-0"> 12 + <main className="w-full h-auto max-w-xs px-4 sm:px-0 my-auto"> 13 13 <h1 className="text-2xl font-serif text-mana-200 mb-2"> 14 14 (string "sign in") 15 15 </h1>
+4 -4
frontend/src/templates/OauthAuthorizePage.mlx
··· 542 542 let rendered_name = 543 543 match client_name with 544 544 | Some client_name -> 545 - <span className="text-mana-100 font-serif mr-1"> 545 + <span className="text-mana-100 font-serif"> 546 546 (string client_name) 547 547 <span className="font-sans">(string (" (" ^ host ^ ")"))</span> 548 548 </span> 549 549 | None when String.length path = 0 -> 550 - <span className="text-mana-100 font-serif mr-1">(string host)</span> 550 + <span className="text-mana-100 font-serif">(string host)</span> 551 551 | None -> 552 - <span className="text-mana-100 font-serif mr-1"> 552 + <span className="text-mana-100 font-serif"> 553 553 (string host) <span className="text-mana-40">(string path)</span> 554 554 </span> 555 555 in ··· 565 565 useState (fun () -> 566 566 Option.value logo_uri ~default:("https://" ^ host ^ "/favicon.ico") ) 567 567 in 568 - <form className="w-full h-auto max-w-lg px-4 sm:px-0"> 568 + <form className="w-full h-auto max-w-lg px-4 sm:px-0 my-auto"> 569 569 <h1 className="text-2xl font-serif text-mana-200 mb-2"> 570 570 (string ("authorizing " ^ host)) 571 571 </h1>
+1 -1
frontend/src/templates/RootPage.mlx
··· 32 32 type props = unit [@@deriving json] 33 33 34 34 let[@react.component] make ~props:(_ : props) () = 35 - <main className="text-mist-100"> 35 + <main className="my-auto text-mist-100"> 36 36 <pre className="text-mana-100">pegasus</pre> 37 37 <p> 38 38 (string "this is ")
+1 -1
frontend/src/templates/SignupPage.mlx
··· 12 12 13 13 let[@react.component] make 14 14 ~props:({csrf_token; invite_required; hostname; error} : props) () = 15 - <main className="w-full h-auto max-w-xs px-4 sm:px-0"> 15 + <main className="w-full h-auto max-w-xs px-4 sm:px-0 my-auto"> 16 16 <h1 className="text-2xl font-serif text-mana-200 mb-2"> 17 17 (string "sign up") 18 18 </h1>