mirror of
https://github.com/mjl-/mox.git
synced 2024-12-25 16:03:48 +03:00
96d86ad6f1
if files {webmail,webaccount,webadmin}.{css,js} exist in the configdir (where the mox.conf file lives), their contents are included in the web apps. the webmail now uses css variables, mostly for colors. so you can write a custom webmail.css that changes the variables, e.g.: :root { --color: blue } you can also look at css class names and override their styles. in the future, we may want to make some css variables configurable in the per-user settings in the webmail. should reduce the number of variables first. any custom javascript is loaded first. if it defines a global function "moxBeforeDisplay", that is called each time a page loads (after authentication) with the DOM element of the page content as parameter. the webmail is a single persistent page. this can be used to make some changes to the DOM, e.g. inserting some elements. we'll have to see how well this works in practice. perhaps some patterns emerge (e.g. adding a logo), and we can make those use-cases easier to achieve. helps partially with issue #114, and based on questions from laura-lilly on matrix.
49 lines
1.9 KiB
HTML
49 lines
1.9 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Mox Admin</title>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<style>
|
|
body, html { padding: 1em; font-size: 16px; }
|
|
* { font-size: inherit; font-family: ubuntu, lato, sans-serif; margin: 0; padding: 0; box-sizing: border-box; }
|
|
h1, h2, h3, h4 { margin-bottom: 1ex; }
|
|
h1 { font-size: 1.2rem; }
|
|
h2 { font-size: 1.1rem; }
|
|
h3, h4 { font-size: 1rem; }
|
|
ul { padding-left: 1rem; }
|
|
.literal { background-color: #eee; padding: .5em 1em; margin: 1ex 0; border: 1px solid #eee; border-radius: 4px; white-space: pre-wrap; font-family: monospace; font-size: 15px; tab-size: 4; }
|
|
table { border-spacing: 0; }
|
|
table td, table th { padding: .2em .5em; }
|
|
table table td, table table th { padding: 0 0.1em; }
|
|
table.long >tbody >tr >td { padding: 1em .5em; }
|
|
table.long td { vertical-align: top; }
|
|
table > tbody > tr:nth-child(odd) { background-color: #f8f8f8; }
|
|
table.hover > tbody > tr:hover { background-color: #f0f0f0; }
|
|
.text { max-width: 50em; }
|
|
p { margin-bottom: 1em; max-width: 50em; }
|
|
[title] { text-decoration: underline; text-decoration-style: dotted; }
|
|
fieldset { border: 0; }
|
|
.twocols { display: flex; gap: 2em; }
|
|
.unclutter { opacity: .5; }
|
|
.unclutter:hover { opacity: 1; }
|
|
@media (max-width:1910px) {
|
|
.twocols { display: block; gap: 2em; }
|
|
}
|
|
.scriptswitch { text-decoration: underline #dca053 2px; }
|
|
thead { position: sticky; top: 0; background-color: white; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); }
|
|
#page, .loadend { opacity: 1; animation: fadein 0.15s ease-in; }
|
|
#page.loading, .loadstart { opacity: 0.1; animation: fadeout 1s ease-out; }
|
|
@keyframes fadein { 0% { opacity: 0 } 100% { opacity: 1 } }
|
|
@keyframes fadeout { 0% { opacity: 1 } 100% { opacity: 0.1 } }
|
|
|
|
/* css placeholder */
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="page"><div style="padding: 1em; text-align: center">Loading...</div></div>
|
|
<script>
|
|
/* js placeholder */
|
|
</script>
|
|
</body>
|
|
</html>
|