add ui
This commit is contained in:
@@ -8,16 +8,19 @@
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Ask Stallman</h1>
|
||||
<div class="inner">
|
||||
<h1>Ask Stallman</h1>
|
||||
</div>
|
||||
</header>
|
||||
{%- if message.len() != 0 -%}
|
||||
<div class="notification {{ ntfy_class }}">
|
||||
<div class="notification notification-{{ ntfy_class }}">
|
||||
<p>{{ message }}</p>
|
||||
</div>
|
||||
{%- endif -%}
|
||||
<div class="question">
|
||||
<form method="post">
|
||||
<input type="text" name="question" placeholder="Your question" autocomplete="off" maxlength="1024">
|
||||
<input class="input" type="text" name="question" placeholder="Your question" autocomplete="off" maxlength="1024">
|
||||
<input class="submit" type="submit" value="Send question">
|
||||
</form>
|
||||
</div>
|
||||
<div class="info">
|
||||
@@ -35,7 +38,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
<footer>
|
||||
<p><a href="https://zumepro.cz">Zumepro</a> 2025</p>
|
||||
<p><a href="https://zumepro.cz" target="_blank">Zumepro</a></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -0,0 +1,153 @@
|
||||
$color-primary: white;
|
||||
$color-primary-background: black;
|
||||
$color-subtle: #908caa;
|
||||
$color-muted: #6e6a86;
|
||||
$color-highlight: #f6c177;
|
||||
$color-iris: #c4a7e7;
|
||||
$color-error: #eb6f92;
|
||||
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: $color-primary;
|
||||
background-color: $color-primary-background;
|
||||
margin: 0;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $color-muted;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: $color-muted;
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 7em;
|
||||
background-color: $color-primary-background;
|
||||
box-shadow: 0 0 10em rgba($color-subtle, .5);
|
||||
border-bottom: 1px solid rgba($color-subtle, .3);
|
||||
}
|
||||
|
||||
@keyframes notification-anim {
|
||||
from { opacity: 0; }
|
||||
to { opacity: 1; }
|
||||
}
|
||||
|
||||
.notification {
|
||||
animation: notification-anim 1s forwards;
|
||||
display: block;
|
||||
margin: 2em 0;
|
||||
width: min(90%, 50em);
|
||||
color: $color-primary;
|
||||
border: 2px dashed $color-primary;
|
||||
overflow: hidden;
|
||||
padding: 1em 1em;
|
||||
border-radius: .5em;
|
||||
box-sizing: border-box;
|
||||
background-color: $color-primary-background;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 4em;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.notification-error {
|
||||
color: $color-error;
|
||||
border-color: $color-error;
|
||||
}
|
||||
|
||||
.question {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
|
||||
form {
|
||||
width: min(90%, 50em);
|
||||
|
||||
input {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.input {
|
||||
transition: .5s ease box-shadow, .5s ease border-color;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 1em 2em;
|
||||
color: $color-primary;
|
||||
background-color: transparent;
|
||||
border: 1px solid $color-iris;
|
||||
border-radius: 2em;
|
||||
outline: none;
|
||||
box-shadow: 0 0 5em rgba($color-subtle, .1);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.input:focus {
|
||||
box-shadow: 0 0 5em $color-subtle;
|
||||
border-color: rgba($color-iris, .5);
|
||||
}
|
||||
|
||||
.submit {
|
||||
transition: .5s ease color, .5s ease background-color, .5s ease box-shadow;
|
||||
display: block;
|
||||
width: fit-content;
|
||||
margin: 2em auto;
|
||||
margin-top: 5em;
|
||||
padding: .5em 1em;
|
||||
border-radius: 2em;
|
||||
box-sizing: border-box;
|
||||
color: $color-primary-background;
|
||||
background-color: $color-primary;
|
||||
border: 2px solid $color-primary;
|
||||
outline: none;
|
||||
z-index: 2;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.submit:hover {
|
||||
color: $color-primary;
|
||||
background-color: $color-primary-background;
|
||||
}
|
||||
|
||||
.submit:focus {
|
||||
color: $color-primary;
|
||||
background-color: $color-primary-background;
|
||||
box-shadow: 0 0 2em $color-primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info {
|
||||
width: min(90%, 50em);
|
||||
margin: 5em auto;
|
||||
z-index: 2;
|
||||
|
||||
ul {
|
||||
padding: 1em;
|
||||
|
||||
li {
|
||||
margin: 1em 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 5em;
|
||||
display: flex;
|
||||
width: min(100%, 50em);
|
||||
margin: 0 auto;
|
||||
justify-content: center;
|
||||
padding: 1em 2em;
|
||||
box-sizing: border-box;
|
||||
border-top: 1px solid $color-muted;
|
||||
opacity: .6;
|
||||
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
}
|
||||
|
@@ -178,6 +178,11 @@ async fn new_question(
|
||||
));
|
||||
};
|
||||
let question = question.to_string();
|
||||
if question.len() == 0 {
|
||||
return Ok(response!(main_page req,
|
||||
"info", "You sent an empty question. Please try again."
|
||||
));
|
||||
}
|
||||
|
||||
// insert question
|
||||
match state.questions.lock().await.add_new(question) {
|
||||
|
Reference in New Issue
Block a user