Integrate aliner theme with name Chassis

This commit is contained in:
Manuel Cillero 2023-10-27 11:14:37 +02:00
parent 7df917e11a
commit 4472f2ef52
18 changed files with 94 additions and 151 deletions

View file

@ -11,7 +11,6 @@ members = [
"pagetop-user",
"pagetop-node",
# Themes.
"pagetop-aliner",
"pagetop-bootsier",
"pagetop-bulmix",
]

View file

@ -59,9 +59,6 @@ El repositorio se organiza en un *workspace* con los siguientes subproyectos:
## Temas
* **[pagetop-aliner](https://github.com/manuelcillero/pagetop/tree/main/pagetop-aliner)**, tema que
delimita con cajas los elementos HTML para mostrar esquemáticamente la composición de las páginas.
* **[pagetop-bootsier](https://github.com/manuelcillero/pagetop/tree/main/pagetop-bootsier)**, tema
que utiliza el *framework* [Bootstrap](https://getbootstrap.com/) para la composición de páginas y
visualización de componentes.

View file

@ -16,7 +16,6 @@ license = "Apache-2.0 OR MIT"
[dependencies]
pagetop = { version = "0.0", path = "../pagetop", features = ["mysql"], default-features = false }
# Themes.
pagetop-aliner = { version = "0.0", path = "../pagetop-aliner" }
pagetop-bootsier = { version = "0.0", path = "../pagetop-bootsier" }
pagetop-bulmix = { version = "0.0", path = "../pagetop-bulmix" }
# Modules.

View file

@ -1,7 +1,8 @@
[app]
#theme = "Default"
#theme = "Aliner"
theme = "Bootsier"
#theme = "Basic"
#theme = "Chassis"
theme = "Inception"
#theme = "Bootsier"
#theme = "Bulmix"
language = "es-ES"

View file

@ -12,7 +12,6 @@ impl ModuleTrait for Drust {
fn dependencies(&self) -> Vec<ModuleRef> {
vec![
// Themes.
&pagetop_aliner::Aliner,
&pagetop_bootsier::Bootsier,
&pagetop_bulmix::Bulmix,
// Modules.

View file

@ -1,22 +0,0 @@
[package]
name = "pagetop-aliner"
version = "0.0.9"
edition = "2021"
authors = [
"Manuel Cillero <manuel@cillero.es>"
]
description = """\
Theme for PageTop with a basic set of styles that encloses HTML elements with boxes to show an \
outline of the page layout and components display.\
"""
homepage = "https://pagetop.cillero.es"
repository = "https://github.com/manuelcillero/pagetop"
license = "Apache-2.0 OR MIT"
[dependencies]
pagetop = { version = "0.0", path = "../pagetop" }
static-files = "0.2.3"
[build-dependencies]
pagetop-build = { version = "0.0", path = "../pagetop-build" }

View file

@ -1,27 +0,0 @@
Tema para **PageTop** que delimita con cajas los elementos HTML para mostrar esquemáticamente la
composición de las páginas.
[PageTop](https://github.com/manuelcillero/pagetop/tree/main/pagetop), es un entorno de desarrollo
basado en algunos de los *crates* más estables y populares del ecosistema Rust para proporcionar
APIs, patrones de desarrollo y buenas prácticas para la creación de soluciones web SSR (*Server-Side
Rendering*).
# 🚧 Advertencia
**PageTop** sólo libera actualmente versiones de desarrollo. La API no es estable y los cambios son
constantes. No puede considerarse preparado hasta que se libere la versión **0.1.0**.
# 📜 Licencia
Este proyecto tiene licencia, de hecho tiene dos, puedes aplicar cualquiera de las siguientes a tu
elección:
* Licencia Apache versión 2.0
([LICENSE-APACHE](https://github.com/manuelcillero/pagetop/blob/main/LICENSE-APACHE) o
[http://www.apache.org/licenses/LICENSE-2.0]).
* Licencia MIT
([LICENSE-MIT](https://github.com/manuelcillero/pagetop/blob/main/LICENSE-MIT) o
[http://opensource.org/licenses/MIT]).

View file

@ -1,7 +0,0 @@
use pagetop_build::StaticFilesBundle;
fn main() -> std::io::Result<()> {
StaticFilesBundle::from_dir("./static")
.with_name("aliner")
.build()
}

View file

@ -1,30 +0,0 @@
use pagetop::prelude::*;
new_handle!(THEME_ALINER);
new_static_files!(aliner);
pub struct Aliner;
impl ModuleTrait for Aliner {
fn handle(&self) -> Handle {
THEME_ALINER
}
fn theme(&self) -> Option<ThemeRef> {
Some(&Aliner)
}
fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
service_for_static_files!(scfg, "/aliner", aliner);
}
}
impl ThemeTrait for Aliner {
fn before_prepare_body(&self, page: &mut Page) {
page.alter_favicon(Some(Favicon::new().with_icon("/base/favicon.ico")))
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/aliner/css/styles.css").with_weight(-99),
));
}
}

View file

@ -1,2 +1,8 @@
mod basic;
pub use basic::{Basic, THEME_BASIC};
mod chassis;
pub use chassis::{Chassis, THEME_CHASSIS};
mod inception;
pub use inception::{Inception, THEME_INCEPTION};

View file

@ -0,0 +1,36 @@
use crate::prelude::*;
new_handle!(THEME_BASIC);
pub struct Basic;
impl ModuleTrait for Basic {
fn handle(&self) -> Handle {
THEME_BASIC
}
fn name(&self) -> L10n {
L10n::n("Basic")
}
fn theme(&self) -> Option<ThemeRef> {
Some(&Basic)
}
}
impl ThemeTrait for Basic {
fn after_prepare_body(&self, page: &mut Page) {
page.alter_favicon(Some(Favicon::new().with_icon("/base/favicon.ico")))
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/base/css/normalize.min.css")
.with_version("8.0.1")
.with_weight(-90),
))
.alter_context(ContextOp::AddBaseAssets)
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/base/css/basic.css")
.with_version("0.0.1")
.with_weight(-90),
));
}
}

View file

@ -0,0 +1,36 @@
use crate::prelude::*;
new_handle!(THEME_CHASSIS);
pub struct Chassis;
impl ModuleTrait for Chassis {
fn handle(&self) -> Handle {
THEME_CHASSIS
}
fn name(&self) -> L10n {
L10n::n("Chassis")
}
fn theme(&self) -> Option<ThemeRef> {
Some(&Chassis)
}
}
impl ThemeTrait for Chassis {
fn after_prepare_body(&self, page: &mut Page) {
page.alter_favicon(Some(Favicon::new().with_icon("/base/favicon.ico")))
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/base/css/normalize.min.css")
.with_version("8.0.1")
.with_weight(-90),
))
.alter_context(ContextOp::AddBaseAssets)
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/base/css/chassis.css")
.with_version("0.0.1")
.with_weight(-90),
));
}
}

View file

@ -2,8 +2,6 @@ use crate::prelude::*;
new_handle!(THEME_INCEPTION);
new_static_files!(base);
pub struct Inception;
impl ModuleTrait for Inception {
@ -12,16 +10,12 @@ impl ModuleTrait for Inception {
}
fn name(&self) -> L10n {
L10n::n("Default")
L10n::n("Inception")
}
fn theme(&self) -> Option<ThemeRef> {
Some(&Inception)
}
fn configure_service(&self, scfg: &mut service::web::ServiceConfig) {
service_for_static_files!(scfg, "/base", base);
}
}
impl ThemeTrait for Inception {
@ -34,7 +28,7 @@ impl ThemeTrait for Inception {
))
.alter_context(ContextOp::AddBaseAssets)
.alter_context(ContextOp::AddStyleSheet(
StyleSheet::at("/base/css/styles.css")
StyleSheet::at("/base/css/inception.css")
.with_version("0.0.1")
.with_weight(-90),
));

View file

@ -1,13 +1,15 @@
use crate::core::action::add_action;
use crate::core::module::ModuleRef;
use crate::core::theme::all::THEMES;
use crate::{service, trace, LazyStatic};
use crate::{new_static_files, service, service_for_static_files, trace, LazyStatic};
#[cfg(feature = "database")]
use crate::db::*;
use std::sync::RwLock;
new_static_files!(base);
// MODULES *****************************************************************************************
static ENABLED_MODULES: LazyStatic<RwLock<Vec<ModuleRef>>> =
@ -27,7 +29,9 @@ pub fn register_modules(app: ModuleRef) {
// List of modules to enable.
let mut list: Vec<ModuleRef> = Vec::new();
// Enable default theme.
// Enable default themes.
add_to_enabled(&mut list, &crate::base::theme::Basic);
add_to_enabled(&mut list, &crate::base::theme::Chassis);
add_to_enabled(&mut list, &crate::base::theme::Inception);
// Enable application modules.
@ -153,6 +157,7 @@ pub fn run_migrations() {
// CONFIGURE SERVICES ******************************************************************************
pub fn configure_services(scfg: &mut service::web::ServiceConfig) {
service_for_static_files!(scfg, "/base", base);
for m in ENABLED_MODULES.read().unwrap().iter() {
m.configure_service(scfg);
}

View file

@ -0,0 +1,3 @@
.pt-body__skip {
display: none;
}

View file

@ -1,46 +0,0 @@
/* Image component */
.pt-img__fluid {
max-width: 100%;
height: auto;
}
/* Branding component */
.pt-branding__wrapper {
display: flex;
align-items: flex-end;
column-gap: var(--pt-gap-0-75);
}
.pt-branding__name {
letter-spacing: 0.02em;
font-size: var(--pt-font-size-xl);
}
.pt-branding__slogan {
font-size: var(--pt-font-size-l);
}
/* SM - Applies <= 568px */
@media (max-width: 35.5em) {
.pt-branding__logo {
display: none;
}
}
/* LG - Applies <= 992px */
@media (max-width: 62em) {
.pt-branding__slogan {
font-size: var(--pt-font-size-l);
}
}
/* PoweredBy component */
#pt-powered-by {
text-align: center;
}
#pt-powered-by .pt-pagetop__logo img,
#pt-powered-by .pt-pagetop__logo svg {
margin-left: .275em;
height: 1.275em;
vertical-align: middle;
}