use simple styling
This commit is contained in:
parent
0f3fb34d85
commit
a94d23bc2c
@ -1,10 +1,10 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use axum::Router;
|
use axum::{routing::get, Router};
|
||||||
use tower_http::trace::TraceLayer;
|
use tower_http::trace::TraceLayer;
|
||||||
|
|
||||||
use crate::{feeds::Feed, routes};
|
use crate::{css_handler::stylesheet_handler, feeds::Feed, routes};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct AppState {
|
pub struct AppState {
|
||||||
@ -15,6 +15,7 @@ pub fn create(feeds: HashMap<String, Feed>) -> Router {
|
|||||||
let app_state = Arc::new(AppState { feeds });
|
let app_state = Arc::new(AppState { feeds });
|
||||||
|
|
||||||
Router::new()
|
Router::new()
|
||||||
|
.route("/styles.css", get(stylesheet_handler))
|
||||||
.nest("/", routes::all())
|
.nest("/", routes::all())
|
||||||
.with_state(app_state)
|
.with_state(app_state)
|
||||||
.layer(TraceLayer::new_for_http())
|
.layer(TraceLayer::new_for_http())
|
||||||
|
12
src/css_handler.rs
Normal file
12
src/css_handler.rs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
use axum::http::StatusCode;
|
||||||
|
use axum::{http::Response, response::IntoResponse};
|
||||||
|
|
||||||
|
static STYLESHEET: &str = include_str!("../static/styles.css");
|
||||||
|
|
||||||
|
pub async fn stylesheet_handler() -> Result<impl IntoResponse, StatusCode> {
|
||||||
|
let response = Response::builder()
|
||||||
|
.header("Content-Type", "text/css")
|
||||||
|
.body(STYLESHEET.to_string());
|
||||||
|
|
||||||
|
response.map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)
|
||||||
|
}
|
@ -4,6 +4,7 @@ use crate::{config::PenguinConfig, feeds::enrich_feeds};
|
|||||||
|
|
||||||
mod app;
|
mod app;
|
||||||
mod config;
|
mod config;
|
||||||
|
mod css_handler;
|
||||||
mod feeds;
|
mod feeds;
|
||||||
mod hash;
|
mod hash;
|
||||||
mod logging;
|
mod logging;
|
||||||
|
19
static/styles.css
Normal file
19
static/styles.css
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
body {
|
||||||
|
max-width: 35em;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
padding: 1em;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
12
templates/base.html
Normal file
12
templates/base.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="stylesheet" href="/styles.css" />
|
||||||
|
<title>Find Penguins Feeds</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,7 +1,9 @@
|
|||||||
|
{% extends "base.html" %} {% block content %}
|
||||||
<ul>
|
<ul>
|
||||||
{% for f in feeds %}
|
{% for f in feeds %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ f.url }}">{{ f.title }}</a> - <a href="/feeds/{{f.id}}">Feed</a>
|
<a href="{{ f.url }}">{{ f.title }}</a><a href="/feeds/{{f.id}}">Feed</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
{% endblock content %}
|
||||||
|
Loading…
Reference in New Issue
Block a user