diff --git a/CREDITS.md b/CREDITS.md index 661a4ba9..1cd66c06 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -1,8 +1,8 @@ # 🔃 Dependencias `PageTop` está basado en [Rust](https://www.rust-lang.org/) y crece a hombros de gigantes -aprovechando algunas de las librerías (*crates*) más robustas y populares del -[ecosistema Rust](https://lib.rs), incluyendo: +aprovechando algunas de las librerías más robustas y populares del [ecosistema Rust](https://lib.rs) +como: * [Actix Web](https://actix.rs/) para los servicios web. * [Tracing](https://github.com/tokio-rs/tracing) para la gestión de trazas y registro de eventos @@ -10,7 +10,7 @@ aprovechando algunas de las librerías (*crates*) más robustas y populares del * [Fluent templates](https://github.com/XAMPPRocky/fluent-templates), que integra [Fluent](https://projectfluent.org/) para internacionalizar las aplicaciones. * Además de otros crates adicionales que puedes explorar en los archivos `Cargo.toml` de `PageTop` - y sus paquetes. + y sus extensiones. # ⌨️ Código @@ -18,12 +18,12 @@ aprovechando algunas de las librerías (*crates*) más robustas y populares del `PageTop` incorpora código de [config-rs](https://crates.io/crates/config) (versión [0.11.0](https://github.com/mehcode/config-rs/tree/0.11.0)) de [Ryan Leckey](https://crates.io/users/mehcode), por sus ventajas para leer y asignar a tipos seguros -las opciones de configuración, delegando la asignación a cada paquete, tema o aplicación. +las opciones de configuración, delegando la asignación a cada extensión, tema o aplicación. # 🗚 FIGfonts -`PageTop` usa el paquete [figlet-rs](https://crates.io/crates/figlet-rs) desarrollado por +`PageTop` usa el *crate* [figlet-rs](https://crates.io/crates/figlet-rs) desarrollado por *yuanbohan* para mostrar un banner de presentación en el terminal con el nombre de la aplicación en caracteres [FIGlet](http://www.figlet.org). Las fuentes incluidas en `pagetop/src/app` son: diff --git a/Cargo.toml b/Cargo.toml index f5709d3b..2cb7681d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,14 +8,14 @@ members = [ # PageTop "pagetop", - # Packages - "packages/pagetop-seaorm", - "packages/pagetop-mdbook", - "packages/pagetop-hljs", + # Extensions + "extensions/pagetop-seaorm", + "extensions/pagetop-mdbook", + "extensions/pagetop-hljs", # Themes - #"packages/pagetop-aliner", - "packages/pagetop-bootsier", + #"extensions/pagetop-aliner", + "extensions/pagetop-bootsier", # Apps "website", @@ -40,11 +40,11 @@ pagetop-macros = { version = "0.0", path = "helpers/pagetop-macros" } # PageTop pagetop = { version = "0.0", path = "pagetop" } -# Packages -pagetop-seaorm = { version = "0.0", path = "packages/pagetop-seaorm" } -pagetop-mdbook = { version = "0.0", path = "packages/pagetop-mdbook" } -pagetop-hljs = { version = "0.0", path = "packages/pagetop-hljs" } +# Extensions +pagetop-seaorm = { version = "0.0", path = "extensions/pagetop-seaorm" } +pagetop-mdbook = { version = "0.0", path = "extensions/pagetop-mdbook" } +pagetop-hljs = { version = "0.0", path = "extensions/pagetop-hljs" } # Themes -#pagetop-aliner = { version = "0.0", path = "packages/pagetop-aliner" } -pagetop-bootsier = { version = "0.0", path = "packages/pagetop-bootsier" } +#pagetop-aliner = { version = "0.0", path = "extensions/pagetop-aliner" } +pagetop-bootsier = { version = "0.0", path = "extensions/pagetop-bootsier" } diff --git a/README.md b/README.md index 39b28678..7897a700 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,10 @@ según las necesidades de cada proyecto, incluyendo: de ejecución. * **Componentes** (*components*): encapsulan HTML, CSS y JavaScript en unidades funcionales, configurables y reutilizables. - * **Paquetes** (*packages*): añaden, extienden o personalizan funcionalidades usando las APIs de - `PageTop` o de terceros. - * **Temas** (*themes*): permiten modificar la apariencia de páginas y componentes sin comprometer - su funcionalidad. + * **Extensiones** (*extensions*): añaden, extienden o personalizan funcionalidades usando las APIs + de `PageTop` o de terceros. + * **Temas** (*themes*): son extensiones que permiten modificar la apariencia de páginas y + componentes sin comprometer su funcionalidad. # ⚡️ Guía rápida @@ -44,14 +44,14 @@ async fn main() -> std::io::Result<()> { Por defecto, este código sirve una página web de bienvenida accesible desde un navegador en la dirección `http://localhost:8088`, siguiendo la configuración predeterminada. -Para personalizar el servicio, puedes crear un paquete de `PageTop` de la siguiente manera: +Para personalizar el servicio, puedes crear una extensión de `PageTop` de la siguiente manera: ```rust#ignore use pagetop::prelude::*; struct HelloWorld; -impl PackageTrait for HelloWorld { +impl ExtensionTrait for HelloWorld { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { scfg.route("/", service::web::get().to(hello_world)); } @@ -69,7 +69,7 @@ async fn main() -> std::io::Result<()> { } ``` -Este programa implementa un paquete llamado `HelloWorld` que sirve una página web en la ruta raíz +Este programa implementa una extensión llamada `HelloWorld` que sirve una página web en la ruta raíz (`/`) mostrando el texto "Hello world!" dentro de un elemento HTML `

`. @@ -90,23 +90,23 @@ El código se organiza en un *workspace* con los siguientes subproyectos: * **[pagetop-macros](https://github.com/manuelcillero/pagetop/tree/latest/helpers/pagetop-macros)**, proporciona una colección de macros que mejoran la experiencia de desarrollo con `PageTop`. -## Paquetes +## Extensiones - * **[pagetop-seaorm](https://github.com/manuelcillero/pagetop/tree/latest/packages/pagetop-seaorm)**, + * **[pagetop-seaorm](https://github.com/manuelcillero/pagetop/tree/latest/extensions/pagetop-seaorm)**, integra [SeaORM](https://www.sea-ql.org/SeaORM) para trabajar con bases de datos en aplicaciones `PageTop`. - * **[pagetop-mdbook](https://github.com/manuelcillero/pagetop/tree/latest/packages/pagetop-mdbook)**, + * **[pagetop-mdbook](https://github.com/manuelcillero/pagetop/tree/latest/extensions/pagetop-mdbook)**, incluye contenido generado por [mdBook](https://rust-lang.github.io/mdBook/) en aplicaciones desarrolladas con `PageTop`. - * **[pagetop-hljs](https://github.com/manuelcillero/pagetop/tree/latest/packages/pagetop-hljs)**, + * **[pagetop-hljs](https://github.com/manuelcillero/pagetop/tree/latest/extensions/pagetop-hljs)**, utiliza [HighlightJS](https://highlightjs.org) para mostrar fragmentos de código con resaltado de sintaxis con `PageTop`. ## Temas - * **[pagetop-bootsier](https://github.com/manuelcillero/pagetop/tree/latest/packages/pagetop-bootsier)**, + * **[pagetop-bootsier](https://github.com/manuelcillero/pagetop/tree/latest/extensions/pagetop-bootsier)**, tema para `PageTop` que usa [Bootstrap](https://getbootstrap.com) para dar vida a tus diseños web. diff --git a/drust/src/main.rs b/drust/src/main.rs index 9f49d06e..2e831ad6 100644 --- a/drust/src/main.rs +++ b/drust/src/main.rs @@ -20,10 +20,10 @@ use pagetop::prelude::*; struct Drust; -impl PackageTrait for Drust { - fn dependencies(&self) -> Vec { +impl ExtensionTrait for Drust { + fn dependencies(&self) -> Vec { vec![ - // Paquetes. + // Extensiones. //&pagetop_admin::Admin, //&pagetop_user::User, //&pagetop_node::Node, diff --git a/packages/.gitignore b/extensions/.gitignore similarity index 100% rename from packages/.gitignore rename to extensions/.gitignore diff --git a/packages/pagetop-bootsier/.gitattributes b/extensions/pagetop-bootsier/.gitattributes similarity index 100% rename from packages/pagetop-bootsier/.gitattributes rename to extensions/pagetop-bootsier/.gitattributes diff --git a/packages/pagetop-bootsier/Cargo.toml b/extensions/pagetop-bootsier/Cargo.toml similarity index 100% rename from packages/pagetop-bootsier/Cargo.toml rename to extensions/pagetop-bootsier/Cargo.toml diff --git a/packages/pagetop-bootsier/README.md b/extensions/pagetop-bootsier/README.md similarity index 100% rename from packages/pagetop-bootsier/README.md rename to extensions/pagetop-bootsier/README.md diff --git a/packages/pagetop-bootsier/build.rs b/extensions/pagetop-bootsier/build.rs similarity index 100% rename from packages/pagetop-bootsier/build.rs rename to extensions/pagetop-bootsier/build.rs diff --git a/packages/pagetop-bootsier/src/bs.rs b/extensions/pagetop-bootsier/src/bs.rs similarity index 97% rename from packages/pagetop-bootsier/src/bs.rs rename to extensions/pagetop-bootsier/src/bs.rs index 4b688d80..77a2dfec 100644 --- a/packages/pagetop-bootsier/src/bs.rs +++ b/extensions/pagetop-bootsier/src/bs.rs @@ -2,6 +2,10 @@ use pagetop::prelude::*; use std::fmt; +// Utilities. +mod utility; +pub use utility::*; + // Container. pub mod container; pub use container::{Container, ContainerType}; @@ -16,6 +20,10 @@ pub use offcanvas::{ Offcanvas, OffcanvasBackdrop, OffcanvasBodyScroll, OffcanvasPlacement, OffcanvasVisibility, }; +// Image. +mod image; +pub use image::{Image, ImageSize}; + // Navbar. pub mod navbar; pub use navbar::{Navbar, NavbarContent, NavbarToggler}; diff --git a/packages/pagetop-bootsier/src/bs/container.rs b/extensions/pagetop-bootsier/src/bs/container.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/container.rs rename to extensions/pagetop-bootsier/src/bs/container.rs diff --git a/packages/pagetop-bootsier/src/bs/dropdown.rs b/extensions/pagetop-bootsier/src/bs/dropdown.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/dropdown.rs rename to extensions/pagetop-bootsier/src/bs/dropdown.rs diff --git a/packages/pagetop-bootsier/src/bs/dropdown/component.rs b/extensions/pagetop-bootsier/src/bs/dropdown/component.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/dropdown/component.rs rename to extensions/pagetop-bootsier/src/bs/dropdown/component.rs diff --git a/packages/pagetop-bootsier/src/bs/dropdown/item.rs b/extensions/pagetop-bootsier/src/bs/dropdown/item.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/dropdown/item.rs rename to extensions/pagetop-bootsier/src/bs/dropdown/item.rs diff --git a/packages/pagetop-bootsier/src/bs/grid.rs b/extensions/pagetop-bootsier/src/bs/grid.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/grid.rs rename to extensions/pagetop-bootsier/src/bs/grid.rs diff --git a/packages/pagetop-bootsier/src/bs/grid/component.rs b/extensions/pagetop-bootsier/src/bs/grid/component.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/grid/component.rs rename to extensions/pagetop-bootsier/src/bs/grid/component.rs diff --git a/packages/pagetop-bootsier/src/bs/grid/item.rs b/extensions/pagetop-bootsier/src/bs/grid/item.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/grid/item.rs rename to extensions/pagetop-bootsier/src/bs/grid/item.rs diff --git a/extensions/pagetop-bootsier/src/bs/image.rs b/extensions/pagetop-bootsier/src/bs/image.rs new file mode 100644 index 00000000..6ba56e85 --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/image.rs @@ -0,0 +1,157 @@ +use pagetop::prelude::*; + +use crate::bs::Border; + +use std::fmt; + +#[derive(AutoDefault)] +pub enum ImageType { + #[default] + Fluid, + Thumbnail, +} + +#[rustfmt::skip] +impl fmt::Display for ImageType { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ImageType::Fluid => write!(f, "img-fluid"), + ImageType::Thumbnail => write!(f, "img-thumbnail"), + } + } +} + +#[derive(AutoDefault)] +pub enum ImageSize { + #[default] + Auto, + Size(u16, u16), + Width(u16), + Height(u16), + Both(u16), +} + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub struct Image { + id : OptionId, + classes : OptionClasses, + image_type: ImageType, + source : OptionString, + size : ImageSize, + border : Border, +} + +impl ComponentTrait for Image { + fn new() -> Self { + Image::default() + } + + fn id(&self) -> Option { + self.id.get() + } + + fn setup_before_prepare(&mut self, _cx: &mut Context) { + self.alter_classes( + ClassesOp::Prepend, + [self.image_type().to_string()].join(" "), + ); + } + + fn prepare_component(&self, _cx: &mut Context) -> PrepareMarkup { + let (width, height) = match self.size() { + ImageSize::Auto => (None, None), + ImageSize::Size(width, height) => (Some(width), Some(height)), + ImageSize::Width(width) => (Some(width), None), + ImageSize::Height(height) => (None, Some(height)), + ImageSize::Both(value) => (Some(value), Some(value)), + }; + PrepareMarkup::With(html! { + img + src=[self.source().get()] + id=[self.id()] + class=[self.classes().get()] + width=[width] + height=[height] {} + }) + } +} + +impl Image { + pub fn with(source: &str) -> Self { + Image::default().with_source(source) + } + + pub fn thumbnail(source: &str) -> Self { + Image::default() + .with_source(source) + .with_image_type(ImageType::Thumbnail) + } + /* + pub fn pagetop() -> Self { + Image::default() + .with_source("/base/pagetop-logo.svg") + .with_classes(ClassesOp::Add, IMG_FIXED) + .with_size(ImageSize::Size(64, 64)) + } + */ + // Image BUILDER. + + #[fn_builder] + pub fn with_id(mut self, id: impl Into) -> Self { + self.id.alter_value(id); + self + } + + #[fn_builder] + pub fn with_classes(mut self, op: ClassesOp, classes: impl Into) -> Self { + self.classes.alter_value(op, classes); + self + } + + #[fn_builder] + pub fn with_image_type(mut self, image_type: ImageType) -> Self { + self.image_type = image_type; + self + } + + #[fn_builder] + pub fn with_source(mut self, source: &str) -> Self { + self.source.alter_value(source); + self + } + + #[fn_builder] + pub fn with_size(mut self, size: ImageSize) -> Self { + self.size = size; + self + } + + #[fn_builder] + pub fn with_border(mut self, border: Border) -> Self { + self.border = border; + self + } + + // Image GETTERS. + + pub fn classes(&self) -> &OptionClasses { + &self.classes + } + + pub fn image_type(&self) -> &ImageType { + &self.image_type + } + + pub fn source(&self) -> &OptionString { + &self.source + } + + pub fn size(&self) -> &ImageSize { + &self.size + } + + pub fn border(&self) -> &Border { + &self.border + } +} diff --git a/packages/pagetop-bootsier/src/bs/navbar.rs b/extensions/pagetop-bootsier/src/bs/navbar.rs similarity index 79% rename from packages/pagetop-bootsier/src/bs/navbar.rs rename to extensions/pagetop-bootsier/src/bs/navbar.rs index e5454d79..d873400c 100644 --- a/packages/pagetop-bootsier/src/bs/navbar.rs +++ b/extensions/pagetop-bootsier/src/bs/navbar.rs @@ -1,6 +1,9 @@ mod component; pub use component::{Navbar, NavbarContent, NavbarToggler}; +//mod brand; +//pub use brand::Brand; + mod nav; pub use nav::Nav; diff --git a/extensions/pagetop-bootsier/src/bs/navbar/brand.rs b/extensions/pagetop-bootsier/src/bs/navbar/brand.rs new file mode 100644 index 00000000..ea09bb4e --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/navbar/brand.rs @@ -0,0 +1,102 @@ +use pagetop::prelude::*; + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub struct Brand { + id : OptionId, + #[default(_code = "global::SETTINGS.app.name.to_owned()")] + app_name : String, + slogan : OptionTranslated, + logo : OptionComponent, + #[default(_code = "|_| \"/\"")] + home : FnContextualPath, +} + +impl ComponentTrait for Brand { + fn new() -> Self { + Brand::default() + } + + fn id(&self) -> Option { + self.id.get() + } + + fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup { + let logo = self.logo().render(cx); + let home = self.home()(cx); + let title = &L10n::l("site_home").using(cx.langid()); + PrepareMarkup::With(html! { + div id=[self.id()] class="branding__container" { + div class="branding__content" { + @if !logo.is_empty() { + a class="branding__logo" href=(home) title=[title] rel="home" { + (logo) + } + } + div class="branding__text" { + a class="branding__name" href=(home) title=[title] rel="home" { + (self.app_name()) + } + @if let Some(slogan) = self.slogan().using(cx.langid()) { + div class="branding__slogan" { + (slogan) + } + } + } + } + } + }) + } +} + +impl Brand { + // Brand BUILDER. + + #[fn_builder] + pub fn with_id(mut self, id: impl Into) -> Self { + self.id.alter_value(id); + self + } + + #[fn_builder] + pub fn with_app_name(mut self, app_name: impl Into) -> Self { + self.app_name = app_name.into(); + self + } + + #[fn_builder] + pub fn with_slogan(mut self, slogan: L10n) -> Self { + self.slogan.alter_value(slogan); + self + } + + #[fn_builder] + pub fn with_logo(mut self, logo: Option) -> Self { + self.logo.alter_value(logo); + self + } + + #[fn_builder] + pub fn with_home(mut self, home: FnContextualPath) -> Self { + self.home = home; + self + } + + // Brand GETTERS. + + pub fn app_name(&self) -> &String { + &self.app_name + } + + pub fn slogan(&self) -> &OptionTranslated { + &self.slogan + } + + pub fn logo(&self) -> &OptionComponent { + &self.logo + } + + pub fn home(&self) -> &FnContextualPath { + &self.home + } +} diff --git a/packages/pagetop-bootsier/src/bs/navbar/component.rs b/extensions/pagetop-bootsier/src/bs/navbar/component.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/navbar/component.rs rename to extensions/pagetop-bootsier/src/bs/navbar/component.rs diff --git a/packages/pagetop-bootsier/src/bs/navbar/item.rs b/extensions/pagetop-bootsier/src/bs/navbar/item.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/navbar/item.rs rename to extensions/pagetop-bootsier/src/bs/navbar/item.rs diff --git a/packages/pagetop-bootsier/src/bs/navbar/nav.rs b/extensions/pagetop-bootsier/src/bs/navbar/nav.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/navbar/nav.rs rename to extensions/pagetop-bootsier/src/bs/navbar/nav.rs diff --git a/packages/pagetop-bootsier/src/bs/offcanvas.rs b/extensions/pagetop-bootsier/src/bs/offcanvas.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/offcanvas.rs rename to extensions/pagetop-bootsier/src/bs/offcanvas.rs diff --git a/packages/pagetop-bootsier/src/bs/offcanvas/component.rs b/extensions/pagetop-bootsier/src/bs/offcanvas/component.rs similarity index 100% rename from packages/pagetop-bootsier/src/bs/offcanvas/component.rs rename to extensions/pagetop-bootsier/src/bs/offcanvas/component.rs diff --git a/extensions/pagetop-bootsier/src/bs/utility.rs b/extensions/pagetop-bootsier/src/bs/utility.rs new file mode 100644 index 00000000..45ae92de --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/utility.rs @@ -0,0 +1,10 @@ +mod color; +pub use color::Color; +pub use color::{BgColor, BorderColor, TextColor}; + +mod opacity; +pub use opacity::Opacity; +pub use opacity::{BgOpacity, BorderOpacity, TextOpacity}; + +mod border; +pub use border::{Border, BorderSize}; diff --git a/extensions/pagetop-bootsier/src/bs/utility/border.rs b/extensions/pagetop-bootsier/src/bs/utility/border.rs new file mode 100644 index 00000000..085b1273 --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/utility/border.rs @@ -0,0 +1,102 @@ +use pagetop::{prelude::*, strict_string}; + +use crate::bs::{BorderColor, BorderOpacity}; + +use std::fmt; + +#[derive(AutoDefault)] +pub enum BorderSize { + #[default] + Default, + Zero, + Width1, + Width2, + Width3, + Width4, + Width5, +} + +#[rustfmt::skip] +impl fmt::Display for BorderSize { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + BorderSize::Default => write!(f, ""), + BorderSize::Zero => write!(f, "0"), + BorderSize::Width1 => write!(f, "1"), + BorderSize::Width2 => write!(f, "2"), + BorderSize::Width3 => write!(f, "3"), + BorderSize::Width4 => write!(f, "4"), + BorderSize::Width5 => write!(f, "5"), + } + } +} + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub struct Border { + color : BorderColor, + opacity: BorderOpacity, + size : BorderSize, + top : BorderSize, + end : BorderSize, + bottom : BorderSize, + start : BorderSize, +} + +impl Border { + pub fn new() -> Self { + Self::default() + } + + pub fn with(size: BorderSize) -> Self { + Self::default().with_size(size) + } + + // Border BUILDER. + + pub fn with_color(mut self, color: BorderColor) -> Self { + self.color = color; + self + } + + pub fn with_opacity(mut self, opacity: BorderOpacity) -> Self { + self.opacity = opacity; + self + } + + pub fn with_size(mut self, size: BorderSize) -> Self { + self.size = size; + self + } + + pub fn with_top(mut self, size: BorderSize) -> Self { + self.top = size; + self + } + + pub fn with_end(mut self, size: BorderSize) -> Self { + self.end = size; + self + } + + pub fn with_bottom(mut self, size: BorderSize) -> Self { + self.bottom = size; + self + } + + pub fn with_start(mut self, size: BorderSize) -> Self { + self.start = size; + self + } +} + +#[rustfmt::skip] +impl fmt::Display for Border { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", strict_string!([ + "border", + &self.color.to_string(), + &self.opacity.to_string(), + ]; " ").unwrap_or_default()) + } +} diff --git a/extensions/pagetop-bootsier/src/bs/utility/color.rs b/extensions/pagetop-bootsier/src/bs/utility/color.rs new file mode 100644 index 00000000..ed5f8d0d --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/utility/color.rs @@ -0,0 +1,119 @@ +use pagetop::prelude::*; + +use std::fmt; + +#[derive(AutoDefault)] +pub enum Color { + #[default] + Primary, + Secondary, + Success, + Info, + Warning, + Danger, + Light, + Dark, +} + +#[rustfmt::skip] +impl fmt::Display for Color { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Color::Primary => write!(f, "primary"), + Color::Secondary => write!(f, "secondary"), + Color::Success => write!(f, "success"), + Color::Info => write!(f, "info"), + Color::Warning => write!(f, "warning"), + Color::Danger => write!(f, "danger"), + Color::Light => write!(f, "light"), + Color::Dark => write!(f, "dark"), + } + } +} + +#[derive(AutoDefault)] +pub enum BgColor { + #[default] + Default, + Body, + BodySecondary, + BodyTertiary, + Theme(Color), + Subtle(Color), + Black, + White, + Transparent, +} + +#[rustfmt::skip] +impl fmt::Display for BgColor { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + BgColor::Default => write!(f, ""), + BgColor::Body => write!(f, "bg-body"), + BgColor::BodySecondary => write!(f, "bg-body-secondary"), + BgColor::BodyTertiary => write!(f, "bg-body-tertiary"), + BgColor::Theme(c) => write!(f, "bg-{}", c), + BgColor::Subtle(c) => write!(f, "bg-{}-subtle", c), + BgColor::Black => write!(f, "bg-black"), + BgColor::White => write!(f, "bg-white"), + BgColor::Transparent => write!(f, "bg-transparent"), + } + } +} + +#[derive(AutoDefault)] +pub enum BorderColor { + #[default] + Default, + Theme(Color), + Subtle(Color), + Black, + White, +} + +#[rustfmt::skip] +impl fmt::Display for BorderColor { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + BorderColor::Default => write!(f, ""), + BorderColor::Theme(c) => write!(f, "border-{}", c), + BorderColor::Subtle(c) => write!(f, "border-{}-subtle", c), + BorderColor::Black => write!(f, "border-black"), + BorderColor::White => write!(f, "border-white"), + } + } +} + +#[derive(AutoDefault)] +pub enum TextColor { + #[default] + Default, + Body, + BodyEmphasis, + BodySecondary, + BodyTertiary, + Theme(Color), + Emphasis(Color), + Background(Color), + Black, + White, +} + +#[rustfmt::skip] +impl fmt::Display for TextColor { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + TextColor::Default => write!(f, ""), + TextColor::Body => write!(f, "text-body"), + TextColor::BodyEmphasis => write!(f, "text-body-emphasis"), + TextColor::BodySecondary => write!(f, "text-body-secondary"), + TextColor::BodyTertiary => write!(f, "text-body-tertiary"), + TextColor::Theme(c) => write!(f, "text-{}", c), + TextColor::Emphasis(c) => write!(f, "text-{}-emphasis", c), + TextColor::Background(c) => write!(f, "text-bg-{}", c), + TextColor::Black => write!(f, "text-black"), + TextColor::White => write!(f, "text-white"), + } + } +} diff --git a/extensions/pagetop-bootsier/src/bs/utility/opacity.rs b/extensions/pagetop-bootsier/src/bs/utility/opacity.rs new file mode 100644 index 00000000..e346b443 --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/utility/opacity.rs @@ -0,0 +1,78 @@ +use pagetop::prelude::*; + +use std::fmt; + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub enum Opacity { + #[default] + Opaque, // 100% + SemiOpaque, // 75% + Half, // 50% + SemiTransparent, // 25% + AlmostTransparent, // 10% +} + +#[rustfmt::skip] +impl fmt::Display for Opacity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Opacity::Opaque => write!(f, "opacity-100"), + Opacity::SemiOpaque => write!(f, "opacity-75"), + Opacity::Half => write!(f, "opacity-50"), + Opacity::SemiTransparent => write!(f, "opacity-25"), + Opacity::AlmostTransparent => write!(f, "opacity-10"), + } + } +} + +#[derive(AutoDefault)] +pub enum BgOpacity { + #[default] + Default, + Theme(Opacity), +} + +#[rustfmt::skip] +impl fmt::Display for BgOpacity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + BgOpacity::Default => write!(f, ""), + BgOpacity::Theme(o) => write!(f, "bg-{}", o), + } + } +} + +#[derive(AutoDefault)] +pub enum BorderOpacity { + #[default] + Default, + Theme(Opacity), +} + +#[rustfmt::skip] +impl fmt::Display for BorderOpacity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + BorderOpacity::Default => write!(f, ""), + BorderOpacity::Theme(o) => write!(f, "border-{}", o), + } + } +} + +#[derive(AutoDefault)] +pub enum TextOpacity { + #[default] + Default, + Theme(Opacity), +} + +#[rustfmt::skip] +impl fmt::Display for TextOpacity { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + TextOpacity::Default => write!(f, ""), + TextOpacity::Theme(o) => write!(f, "text-{}", o), + } + } +} diff --git a/extensions/pagetop-bootsier/src/bs/utility/rounded.rs b/extensions/pagetop-bootsier/src/bs/utility/rounded.rs new file mode 100644 index 00000000..3cc10fc0 --- /dev/null +++ b/extensions/pagetop-bootsier/src/bs/utility/rounded.rs @@ -0,0 +1,116 @@ +use pagetop::prelude::*; + +use crate::bs::{Color, Opacity}; + +#[derive(AutoDefault)] +pub enum BorderSize { + #[default] + None, + Width1, + Width2, + Width3, + Width4, + Width5, + Free(unit::Value), +} + +#[derive(AutoDefault)] +pub enum BorderRadius { + #[default] + None, + Rounded1, + Rounded2, + Rounded3, + Rounded4, + Rounded5, + Circle, + Pill, + Free(f32), +} + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub struct BorderProperty { + color : Color, + opacity: Opacity, + size : BorderSize, + radius : BorderRadius, +} + +impl BorderProperty { + pub fn new() -> Self { + BorderProperty::default() + } + + pub fn with_color(mut self, color: Color) -> Self { + self.color = color; + self + } + + pub fn with_opacity(mut self, opacity: Opacity) -> Self { + self.opacity = opacity; + self + } + + pub fn with_size(mut self, size: BorderSize) -> Self { + self.size = size; + self + } + + pub fn with_radius(mut self, radius: BorderRadius) -> Self { + self.radius = radius; + self + } +} + +#[rustfmt::skip] +#[derive(AutoDefault)] +pub struct Border { + all : Option, + top : Option, + end : Option, + bottom: Option, + start : Option, +} + +impl Border { + pub fn new() -> Self { + Self::default() + } + + // Border BUILDER. + + pub fn with_all(mut self, border: BorderProperty) -> Self { + self.all = Some(border); + self + } + + pub fn with_top(mut self, border: BorderProperty) -> Self { + self.top = Some(border); + self + } + + pub fn with_end(mut self, border: BorderProperty) -> Self { + self.end = Some(border); + self + } + + pub fn with_bottom(mut self, border: BorderProperty) -> Self { + self.bottom = Some(border); + self + } + + pub fn with_start(mut self, border: BorderProperty) -> Self { + self.start = Some(border); + self + } + + pub fn with_none(mut self) -> Self { + self.all = None; + self.top = None; + self.end = None; + self.bottom = None; + self.start = None; + self + } +} diff --git a/packages/pagetop-bootsier/src/config.rs b/extensions/pagetop-bootsier/src/config.rs similarity index 100% rename from packages/pagetop-bootsier/src/config.rs rename to extensions/pagetop-bootsier/src/config.rs diff --git a/packages/pagetop-bootsier/src/lib.rs b/extensions/pagetop-bootsier/src/lib.rs similarity index 99% rename from packages/pagetop-bootsier/src/lib.rs rename to extensions/pagetop-bootsier/src/lib.rs index 323bff94..cb84a732 100644 --- a/packages/pagetop-bootsier/src/lib.rs +++ b/extensions/pagetop-bootsier/src/lib.rs @@ -17,7 +17,7 @@ pub mod bs; pub struct Bootsier; -impl PackageTrait for Bootsier { +impl ExtensionTrait for Bootsier { fn theme(&self) -> Option { Some(&Bootsier) } diff --git a/packages/pagetop-bootsier/src/locale/en-US/bootsier.ftl b/extensions/pagetop-bootsier/src/locale/en-US/bootsier.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/en-US/bootsier.ftl rename to extensions/pagetop-bootsier/src/locale/en-US/bootsier.ftl diff --git a/packages/pagetop-bootsier/src/locale/en-US/components.ftl b/extensions/pagetop-bootsier/src/locale/en-US/components.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/en-US/components.ftl rename to extensions/pagetop-bootsier/src/locale/en-US/components.ftl diff --git a/packages/pagetop-bootsier/src/locale/en-US/regions.ftl b/extensions/pagetop-bootsier/src/locale/en-US/regions.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/en-US/regions.ftl rename to extensions/pagetop-bootsier/src/locale/en-US/regions.ftl diff --git a/packages/pagetop-bootsier/src/locale/es-ES/bootsier.ftl b/extensions/pagetop-bootsier/src/locale/es-ES/bootsier.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/es-ES/bootsier.ftl rename to extensions/pagetop-bootsier/src/locale/es-ES/bootsier.ftl diff --git a/packages/pagetop-bootsier/src/locale/es-ES/components.ftl b/extensions/pagetop-bootsier/src/locale/es-ES/components.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/es-ES/components.ftl rename to extensions/pagetop-bootsier/src/locale/es-ES/components.ftl diff --git a/packages/pagetop-bootsier/src/locale/es-ES/regions.ftl b/extensions/pagetop-bootsier/src/locale/es-ES/regions.ftl similarity index 100% rename from packages/pagetop-bootsier/src/locale/es-ES/regions.ftl rename to extensions/pagetop-bootsier/src/locale/es-ES/regions.ftl diff --git a/packages/pagetop-bootsier/static/js/bootstrap.js b/extensions/pagetop-bootsier/static/js/bootstrap.js similarity index 100% rename from packages/pagetop-bootsier/static/js/bootstrap.js rename to extensions/pagetop-bootsier/static/js/bootstrap.js diff --git a/packages/pagetop-bootsier/static/js/bootstrap.js.map b/extensions/pagetop-bootsier/static/js/bootstrap.js.map similarity index 100% rename from packages/pagetop-bootsier/static/js/bootstrap.js.map rename to extensions/pagetop-bootsier/static/js/bootstrap.js.map diff --git a/packages/pagetop-bootsier/static/js/bootstrap.min.js b/extensions/pagetop-bootsier/static/js/bootstrap.min.js similarity index 100% rename from packages/pagetop-bootsier/static/js/bootstrap.min.js rename to extensions/pagetop-bootsier/static/js/bootstrap.min.js diff --git a/packages/pagetop-bootsier/static/js/bootstrap.min.js.map b/extensions/pagetop-bootsier/static/js/bootstrap.min.js.map similarity index 100% rename from packages/pagetop-bootsier/static/js/bootstrap.min.js.map rename to extensions/pagetop-bootsier/static/js/bootstrap.min.js.map diff --git a/packages/pagetop-bootsier/static/scss/_custom.scss b/extensions/pagetop-bootsier/static/scss/_custom.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/_custom.scss rename to extensions/pagetop-bootsier/static/scss/_custom.scss diff --git a/packages/pagetop-bootsier/static/scss/bootsier.scss b/extensions/pagetop-bootsier/static/scss/bootsier.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootsier.scss rename to extensions/pagetop-bootsier/static/scss/bootsier.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_accordion.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_accordion.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_accordion.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_accordion.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_alert.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_alert.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_alert.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_alert.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_badge.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_badge.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_badge.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_badge.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_breadcrumb.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_breadcrumb.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_breadcrumb.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_breadcrumb.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_button-group.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_button-group.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_button-group.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_button-group.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_buttons.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_buttons.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_buttons.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_buttons.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_card.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_card.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_card.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_card.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_carousel.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_carousel.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_carousel.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_carousel.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_close.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_close.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_close.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_close.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_containers.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_containers.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_containers.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_containers.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_dropdown.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_dropdown.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_dropdown.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_dropdown.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_forms.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_forms.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_forms.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_forms.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_functions.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_functions.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_functions.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_functions.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_grid.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_grid.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_grid.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_grid.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_helpers.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_helpers.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_helpers.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_helpers.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_images.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_images.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_images.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_images.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_list-group.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_list-group.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_list-group.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_list-group.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_maps.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_maps.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_maps.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_maps.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_mixins.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_mixins.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_mixins.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_mixins.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_modal.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_modal.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_modal.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_modal.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_nav.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_nav.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_nav.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_nav.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_navbar.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_navbar.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_navbar.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_navbar.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_offcanvas.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_offcanvas.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_offcanvas.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_offcanvas.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_pagination.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_pagination.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_pagination.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_pagination.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_placeholders.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_placeholders.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_placeholders.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_placeholders.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_popover.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_popover.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_popover.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_popover.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_progress.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_progress.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_progress.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_progress.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_reboot.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_reboot.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_reboot.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_reboot.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_root.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_root.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_root.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_root.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_spinners.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_spinners.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_spinners.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_spinners.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tables.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tables.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tables.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tables.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_toasts.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_toasts.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_toasts.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_toasts.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tooltip.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tooltip.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tooltip.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_tooltip.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_transitions.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_transitions.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_transitions.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_transitions.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_type.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_type.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_type.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_type.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_utilities.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_utilities.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_utilities.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_utilities.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables-dark.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables-dark.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables-dark.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables-dark.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/_variables.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-grid.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-grid.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-grid.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-grid.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-reboot.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-reboot.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-reboot.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-reboot.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-utilities.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-utilities.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-utilities.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap-utilities.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/bootstrap.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_floating-labels.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_floating-labels.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_floating-labels.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_floating-labels.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-check.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-check.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-check.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-check.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-control.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-control.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-control.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-control.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-range.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-range.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-range.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-range.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-select.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-select.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-select.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-select.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-text.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-text.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-text.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_form-text.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_input-group.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_input-group.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_input-group.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_input-group.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_labels.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_labels.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_labels.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_labels.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_validation.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_validation.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_validation.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/forms/_validation.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_clearfix.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_clearfix.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_clearfix.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_clearfix.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_color-bg.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_color-bg.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_color-bg.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_color-bg.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_colored-links.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_colored-links.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_colored-links.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_colored-links.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_focus-ring.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_focus-ring.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_focus-ring.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_focus-ring.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_icon-link.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_icon-link.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_icon-link.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_icon-link.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_position.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_position.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_position.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_position.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_ratio.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_ratio.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_ratio.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_ratio.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stacks.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stacks.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stacks.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stacks.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stretched-link.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stretched-link.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stretched-link.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_stretched-link.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_text-truncation.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_text-truncation.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_text-truncation.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_text-truncation.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_visually-hidden.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_visually-hidden.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_visually-hidden.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_visually-hidden.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_vr.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_vr.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_vr.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/helpers/_vr.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_alert.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_alert.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_alert.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_alert.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_backdrop.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_backdrop.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_backdrop.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_backdrop.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_banner.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_banner.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_banner.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_banner.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_border-radius.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_border-radius.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_border-radius.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_border-radius.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_box-shadow.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_box-shadow.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_box-shadow.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_box-shadow.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_breakpoints.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_breakpoints.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_breakpoints.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_breakpoints.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_buttons.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_buttons.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_buttons.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_buttons.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_caret.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_caret.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_caret.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_caret.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_clearfix.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_clearfix.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_clearfix.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_clearfix.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-mode.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-mode.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-mode.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-mode.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-scheme.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-scheme.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-scheme.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_color-scheme.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_container.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_container.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_container.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_container.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_deprecate.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_deprecate.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_deprecate.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_deprecate.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_forms.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_forms.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_forms.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_forms.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_gradients.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_gradients.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_gradients.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_gradients.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_grid.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_grid.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_grid.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_grid.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_image.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_image.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_image.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_image.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_list-group.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_list-group.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_list-group.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_list-group.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_lists.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_lists.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_lists.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_lists.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_pagination.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_pagination.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_pagination.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_pagination.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_reset-text.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_reset-text.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_reset-text.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_reset-text.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_resize.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_resize.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_resize.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_resize.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_table-variants.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_table-variants.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_table-variants.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_table-variants.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_text-truncate.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_text-truncate.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_text-truncate.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_text-truncate.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_transition.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_transition.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_transition.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_transition.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_utilities.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_utilities.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_utilities.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_utilities.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_visually-hidden.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_visually-hidden.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_visually-hidden.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/mixins/_visually-hidden.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/jasmine.js b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/jasmine.js similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/jasmine.js rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/jasmine.js diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_auto-import-of-variables-dark.test.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_auto-import-of-variables-dark.test.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_auto-import-of-variables-dark.test.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_auto-import-of-variables-dark.test.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_color-modes.test.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_color-modes.test.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_color-modes.test.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_color-modes.test.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_media-query-color-mode-full.test.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_media-query-color-mode-full.test.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_media-query-color-mode-full.test.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_media-query-color-mode-full.test.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_utilities.test.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_utilities.test.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_utilities.test.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/mixins/_utilities.test.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/register.js b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/register.js similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/register.js rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/register.js diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/runner.js b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/runner.js similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/runner.js rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/sass-true/runner.js diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/utilities/_api.test.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/utilities/_api.test.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/utilities/_api.test.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/tests/utilities/_api.test.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/utilities/_api.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/utilities/_api.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/utilities/_api.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/utilities/_api.scss diff --git a/packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/vendor/_rfs.scss b/extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/vendor/_rfs.scss similarity index 100% rename from packages/pagetop-bootsier/static/scss/bootstrap-5.3.3/vendor/_rfs.scss rename to extensions/pagetop-bootsier/static/scss/bootstrap-5.3.3/vendor/_rfs.scss diff --git a/packages/pagetop-hljs/.gitattributes b/extensions/pagetop-hljs/.gitattributes similarity index 100% rename from packages/pagetop-hljs/.gitattributes rename to extensions/pagetop-hljs/.gitattributes diff --git a/packages/pagetop-hljs/Cargo.toml b/extensions/pagetop-hljs/Cargo.toml similarity index 100% rename from packages/pagetop-hljs/Cargo.toml rename to extensions/pagetop-hljs/Cargo.toml diff --git a/packages/pagetop-hljs/README.md b/extensions/pagetop-hljs/README.md similarity index 94% rename from packages/pagetop-hljs/README.md rename to extensions/pagetop-hljs/README.md index bb472b85..3ce272ff 100644 --- a/packages/pagetop-hljs/README.md +++ b/extensions/pagetop-hljs/README.md @@ -38,14 +38,14 @@ Añade `pagetop-hljs` a tu archivo `Cargo.toml`: pagetop-hljs = "" ``` -Incluye `pagetop_hljs::HighlightJS` en las dependencias del paquete o aplicación que lo requiera: +Incluye `pagetop_hljs::HighlightJS` en las dependencias de la extensión o aplicación que lo requiera: ```rust#ignore use pagetop::prelude::*; -impl PackageTrait for MyPackage { +impl ExtensionTrait for MyExtension { // ... - fn dependencies(&self) -> Vec { + fn dependencies(&self) -> Vec { vec![ // ... &pagetop_hljs::HighlightJS, diff --git a/packages/pagetop-hljs/build.rs b/extensions/pagetop-hljs/build.rs similarity index 100% rename from packages/pagetop-hljs/build.rs rename to extensions/pagetop-hljs/build.rs diff --git a/packages/pagetop-hljs/examples/sample.rs b/extensions/pagetop-hljs/examples/sample.rs similarity index 91% rename from packages/pagetop-hljs/examples/sample.rs rename to extensions/pagetop-hljs/examples/sample.rs index aea5763d..18286edc 100644 --- a/packages/pagetop-hljs/examples/sample.rs +++ b/extensions/pagetop-hljs/examples/sample.rs @@ -3,8 +3,8 @@ use pagetop_hljs::prelude::*; struct HljsSample; -impl PackageTrait for HljsSample { - fn dependencies(&self) -> Vec { +impl ExtensionTrait for HljsSample { + fn dependencies(&self) -> Vec { vec![&pagetop_hljs::HighlightJS] } @@ -31,7 +31,7 @@ use pagetop::prelude::*; struct HelloWorld; -impl Package for HelloWorld { +impl ExtensionTrait for HelloWorld { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { scfg.route("/", service::web::get().to(hello_world)); } diff --git a/packages/pagetop-hljs/src/config.rs b/extensions/pagetop-hljs/src/config.rs similarity index 100% rename from packages/pagetop-hljs/src/config.rs rename to extensions/pagetop-hljs/src/config.rs diff --git a/packages/pagetop-hljs/src/context.rs b/extensions/pagetop-hljs/src/context.rs similarity index 100% rename from packages/pagetop-hljs/src/context.rs rename to extensions/pagetop-hljs/src/context.rs diff --git a/packages/pagetop-hljs/src/lang.rs b/extensions/pagetop-hljs/src/lang.rs similarity index 100% rename from packages/pagetop-hljs/src/lang.rs rename to extensions/pagetop-hljs/src/lang.rs diff --git a/packages/pagetop-hljs/src/lib.rs b/extensions/pagetop-hljs/src/lib.rs similarity index 94% rename from packages/pagetop-hljs/src/lib.rs rename to extensions/pagetop-hljs/src/lib.rs index 9111d2a7..2a83ed58 100644 --- a/packages/pagetop-hljs/src/lib.rs +++ b/extensions/pagetop-hljs/src/lib.rs @@ -20,14 +20,15 @@ //! pagetop-hljs = "" //! ``` //! -//! Incluye `pagetop_hljs::HighlightJS` en las dependencias del paquete o aplicación que lo requiera: +//! Incluye `pagetop_hljs::HighlightJS` en las dependencias de la extensión o aplicación que lo +//! requiera: //! //! ```rust#ignore //! use pagetop::prelude::*; //! -//! impl PackageTrait for MyPackage { +//! impl ExtensionTrait for MyExtension { //! // ... -//! fn dependencies(&self) -> Vec { +//! fn dependencies(&self) -> Vec { //! vec![ //! // ... //! &pagetop_hljs::HighlightJS, @@ -100,10 +101,10 @@ pub mod prelude { pub use crate::snippet::HljsSnippet; } -/// Implementa [`PackageTrait`]. +/// Implementa [`ExtensionTrait`]. pub struct HighlightJS; -impl PackageTrait for HighlightJS { +impl ExtensionTrait for HighlightJS { fn description(&self) -> L10n { L10n::t("hljs_description", &LOCALES_HLJS) } diff --git a/packages/pagetop-hljs/src/locale/en-US/package.ftl b/extensions/pagetop-hljs/src/locale/en-US/package.ftl similarity index 100% rename from packages/pagetop-hljs/src/locale/en-US/package.ftl rename to extensions/pagetop-hljs/src/locale/en-US/package.ftl diff --git a/packages/pagetop-hljs/src/locale/es-ES/package.ftl b/extensions/pagetop-hljs/src/locale/es-ES/package.ftl similarity index 100% rename from packages/pagetop-hljs/src/locale/es-ES/package.ftl rename to extensions/pagetop-hljs/src/locale/es-ES/package.ftl diff --git a/packages/pagetop-hljs/src/mode.rs b/extensions/pagetop-hljs/src/mode.rs similarity index 100% rename from packages/pagetop-hljs/src/mode.rs rename to extensions/pagetop-hljs/src/mode.rs diff --git a/packages/pagetop-hljs/src/snippet.rs b/extensions/pagetop-hljs/src/snippet.rs similarity index 100% rename from packages/pagetop-hljs/src/snippet.rs rename to extensions/pagetop-hljs/src/snippet.rs diff --git a/packages/pagetop-hljs/src/theme.rs b/extensions/pagetop-hljs/src/theme.rs similarity index 100% rename from packages/pagetop-hljs/src/theme.rs rename to extensions/pagetop-hljs/src/theme.rs diff --git a/packages/pagetop-hljs/static/css/a11y-dark.min.css b/extensions/pagetop-hljs/static/css/a11y-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/a11y-dark.min.css rename to extensions/pagetop-hljs/static/css/a11y-dark.min.css diff --git a/packages/pagetop-hljs/static/css/a11y-light.min.css b/extensions/pagetop-hljs/static/css/a11y-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/a11y-light.min.css rename to extensions/pagetop-hljs/static/css/a11y-light.min.css diff --git a/packages/pagetop-hljs/static/css/agate.min.css b/extensions/pagetop-hljs/static/css/agate.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/agate.min.css rename to extensions/pagetop-hljs/static/css/agate.min.css diff --git a/packages/pagetop-hljs/static/css/an-old-hope.min.css b/extensions/pagetop-hljs/static/css/an-old-hope.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/an-old-hope.min.css rename to extensions/pagetop-hljs/static/css/an-old-hope.min.css diff --git a/packages/pagetop-hljs/static/css/androidstudio.min.css b/extensions/pagetop-hljs/static/css/androidstudio.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/androidstudio.min.css rename to extensions/pagetop-hljs/static/css/androidstudio.min.css diff --git a/packages/pagetop-hljs/static/css/arduino-light.min.css b/extensions/pagetop-hljs/static/css/arduino-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/arduino-light.min.css rename to extensions/pagetop-hljs/static/css/arduino-light.min.css diff --git a/packages/pagetop-hljs/static/css/arta.min.css b/extensions/pagetop-hljs/static/css/arta.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/arta.min.css rename to extensions/pagetop-hljs/static/css/arta.min.css diff --git a/packages/pagetop-hljs/static/css/ascetic.min.css b/extensions/pagetop-hljs/static/css/ascetic.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/ascetic.min.css rename to extensions/pagetop-hljs/static/css/ascetic.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-cave-light.min.css b/extensions/pagetop-hljs/static/css/atelier-cave-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-cave-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-cave-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-cave.min.css b/extensions/pagetop-hljs/static/css/atelier-cave.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-cave.min.css rename to extensions/pagetop-hljs/static/css/atelier-cave.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-dune-light.min.css b/extensions/pagetop-hljs/static/css/atelier-dune-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-dune-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-dune-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-dune.min.css b/extensions/pagetop-hljs/static/css/atelier-dune.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-dune.min.css rename to extensions/pagetop-hljs/static/css/atelier-dune.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-estuary-light.min.css b/extensions/pagetop-hljs/static/css/atelier-estuary-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-estuary-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-estuary-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-estuary.min.css b/extensions/pagetop-hljs/static/css/atelier-estuary.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-estuary.min.css rename to extensions/pagetop-hljs/static/css/atelier-estuary.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-forest-light.min.css b/extensions/pagetop-hljs/static/css/atelier-forest-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-forest-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-forest-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-forest.min.css b/extensions/pagetop-hljs/static/css/atelier-forest.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-forest.min.css rename to extensions/pagetop-hljs/static/css/atelier-forest.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-heath-light.min.css b/extensions/pagetop-hljs/static/css/atelier-heath-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-heath-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-heath-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-heath.min.css b/extensions/pagetop-hljs/static/css/atelier-heath.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-heath.min.css rename to extensions/pagetop-hljs/static/css/atelier-heath.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-lakeside-light.min.css b/extensions/pagetop-hljs/static/css/atelier-lakeside-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-lakeside-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-lakeside-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-lakeside.min.css b/extensions/pagetop-hljs/static/css/atelier-lakeside.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-lakeside.min.css rename to extensions/pagetop-hljs/static/css/atelier-lakeside.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-plateau-light.min.css b/extensions/pagetop-hljs/static/css/atelier-plateau-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-plateau-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-plateau-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-plateau.min.css b/extensions/pagetop-hljs/static/css/atelier-plateau.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-plateau.min.css rename to extensions/pagetop-hljs/static/css/atelier-plateau.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-savanna-light.min.css b/extensions/pagetop-hljs/static/css/atelier-savanna-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-savanna-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-savanna-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-savanna.min.css b/extensions/pagetop-hljs/static/css/atelier-savanna.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-savanna.min.css rename to extensions/pagetop-hljs/static/css/atelier-savanna.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-seaside-light.min.css b/extensions/pagetop-hljs/static/css/atelier-seaside-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-seaside-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-seaside-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-seaside.min.css b/extensions/pagetop-hljs/static/css/atelier-seaside.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-seaside.min.css rename to extensions/pagetop-hljs/static/css/atelier-seaside.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-sulphurpool-light.min.css b/extensions/pagetop-hljs/static/css/atelier-sulphurpool-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-sulphurpool-light.min.css rename to extensions/pagetop-hljs/static/css/atelier-sulphurpool-light.min.css diff --git a/packages/pagetop-hljs/static/css/atelier-sulphurpool.min.css b/extensions/pagetop-hljs/static/css/atelier-sulphurpool.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atelier-sulphurpool.min.css rename to extensions/pagetop-hljs/static/css/atelier-sulphurpool.min.css diff --git a/packages/pagetop-hljs/static/css/atom-one-dark-reasonable.min.css b/extensions/pagetop-hljs/static/css/atom-one-dark-reasonable.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atom-one-dark-reasonable.min.css rename to extensions/pagetop-hljs/static/css/atom-one-dark-reasonable.min.css diff --git a/packages/pagetop-hljs/static/css/atom-one-dark.min.css b/extensions/pagetop-hljs/static/css/atom-one-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atom-one-dark.min.css rename to extensions/pagetop-hljs/static/css/atom-one-dark.min.css diff --git a/packages/pagetop-hljs/static/css/atom-one-light.min.css b/extensions/pagetop-hljs/static/css/atom-one-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/atom-one-light.min.css rename to extensions/pagetop-hljs/static/css/atom-one-light.min.css diff --git a/packages/pagetop-hljs/static/css/brown-paper.min.css b/extensions/pagetop-hljs/static/css/brown-paper.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/brown-paper.min.css rename to extensions/pagetop-hljs/static/css/brown-paper.min.css diff --git a/packages/pagetop-hljs/static/css/brown-papersq.png b/extensions/pagetop-hljs/static/css/brown-papersq.png similarity index 100% rename from packages/pagetop-hljs/static/css/brown-papersq.png rename to extensions/pagetop-hljs/static/css/brown-papersq.png diff --git a/packages/pagetop-hljs/static/css/codepen-embed.min.css b/extensions/pagetop-hljs/static/css/codepen-embed.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/codepen-embed.min.css rename to extensions/pagetop-hljs/static/css/codepen-embed.min.css diff --git a/packages/pagetop-hljs/static/css/color-brewer.min.css b/extensions/pagetop-hljs/static/css/color-brewer.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/color-brewer.min.css rename to extensions/pagetop-hljs/static/css/color-brewer.min.css diff --git a/packages/pagetop-hljs/static/css/darcula.min.css b/extensions/pagetop-hljs/static/css/darcula.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/darcula.min.css rename to extensions/pagetop-hljs/static/css/darcula.min.css diff --git a/packages/pagetop-hljs/static/css/dark.min.css b/extensions/pagetop-hljs/static/css/dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/dark.min.css rename to extensions/pagetop-hljs/static/css/dark.min.css diff --git a/packages/pagetop-hljs/static/css/default.min.css b/extensions/pagetop-hljs/static/css/default.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/default.min.css rename to extensions/pagetop-hljs/static/css/default.min.css diff --git a/packages/pagetop-hljs/static/css/devibeans.min.css b/extensions/pagetop-hljs/static/css/devibeans.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/devibeans.min.css rename to extensions/pagetop-hljs/static/css/devibeans.min.css diff --git a/packages/pagetop-hljs/static/css/docco.min.css b/extensions/pagetop-hljs/static/css/docco.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/docco.min.css rename to extensions/pagetop-hljs/static/css/docco.min.css diff --git a/packages/pagetop-hljs/static/css/dracula.min.css b/extensions/pagetop-hljs/static/css/dracula.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/dracula.min.css rename to extensions/pagetop-hljs/static/css/dracula.min.css diff --git a/packages/pagetop-hljs/static/css/far.min.css b/extensions/pagetop-hljs/static/css/far.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/far.min.css rename to extensions/pagetop-hljs/static/css/far.min.css diff --git a/packages/pagetop-hljs/static/css/foundation.min.css b/extensions/pagetop-hljs/static/css/foundation.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/foundation.min.css rename to extensions/pagetop-hljs/static/css/foundation.min.css diff --git a/packages/pagetop-hljs/static/css/framer.min.css b/extensions/pagetop-hljs/static/css/framer.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/framer.min.css rename to extensions/pagetop-hljs/static/css/framer.min.css diff --git a/packages/pagetop-hljs/static/css/gigavolt.min.css b/extensions/pagetop-hljs/static/css/gigavolt.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gigavolt.min.css rename to extensions/pagetop-hljs/static/css/gigavolt.min.css diff --git a/packages/pagetop-hljs/static/css/github.min.css b/extensions/pagetop-hljs/static/css/github.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/github.min.css rename to extensions/pagetop-hljs/static/css/github.min.css diff --git a/packages/pagetop-hljs/static/css/gml.min.css b/extensions/pagetop-hljs/static/css/gml.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gml.min.css rename to extensions/pagetop-hljs/static/css/gml.min.css diff --git a/packages/pagetop-hljs/static/css/googlecode.min.css b/extensions/pagetop-hljs/static/css/googlecode.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/googlecode.min.css rename to extensions/pagetop-hljs/static/css/googlecode.min.css diff --git a/packages/pagetop-hljs/static/css/gradient-dark.min.css b/extensions/pagetop-hljs/static/css/gradient-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gradient-dark.min.css rename to extensions/pagetop-hljs/static/css/gradient-dark.min.css diff --git a/packages/pagetop-hljs/static/css/gradient-light.min.css b/extensions/pagetop-hljs/static/css/gradient-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gradient-light.min.css rename to extensions/pagetop-hljs/static/css/gradient-light.min.css diff --git a/packages/pagetop-hljs/static/css/grayscale.min.css b/extensions/pagetop-hljs/static/css/grayscale.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/grayscale.min.css rename to extensions/pagetop-hljs/static/css/grayscale.min.css diff --git a/packages/pagetop-hljs/static/css/gruvbox-dark-hard.min.css b/extensions/pagetop-hljs/static/css/gruvbox-dark-hard.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gruvbox-dark-hard.min.css rename to extensions/pagetop-hljs/static/css/gruvbox-dark-hard.min.css diff --git a/packages/pagetop-hljs/static/css/gruvbox-light-hard.min.css b/extensions/pagetop-hljs/static/css/gruvbox-light-hard.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/gruvbox-light-hard.min.css rename to extensions/pagetop-hljs/static/css/gruvbox-light-hard.min.css diff --git a/packages/pagetop-hljs/static/css/hopscotch.min.css b/extensions/pagetop-hljs/static/css/hopscotch.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/hopscotch.min.css rename to extensions/pagetop-hljs/static/css/hopscotch.min.css diff --git a/packages/pagetop-hljs/static/css/hybrid.min.css b/extensions/pagetop-hljs/static/css/hybrid.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/hybrid.min.css rename to extensions/pagetop-hljs/static/css/hybrid.min.css diff --git a/packages/pagetop-hljs/static/css/idea.min.css b/extensions/pagetop-hljs/static/css/idea.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/idea.min.css rename to extensions/pagetop-hljs/static/css/idea.min.css diff --git a/packages/pagetop-hljs/static/css/ir-black.min.css b/extensions/pagetop-hljs/static/css/ir-black.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/ir-black.min.css rename to extensions/pagetop-hljs/static/css/ir-black.min.css diff --git a/packages/pagetop-hljs/static/css/kimbie-dark.min.css b/extensions/pagetop-hljs/static/css/kimbie-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/kimbie-dark.min.css rename to extensions/pagetop-hljs/static/css/kimbie-dark.min.css diff --git a/packages/pagetop-hljs/static/css/kimbie-light.min.css b/extensions/pagetop-hljs/static/css/kimbie-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/kimbie-light.min.css rename to extensions/pagetop-hljs/static/css/kimbie-light.min.css diff --git a/packages/pagetop-hljs/static/css/lightfair.min.css b/extensions/pagetop-hljs/static/css/lightfair.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/lightfair.min.css rename to extensions/pagetop-hljs/static/css/lightfair.min.css diff --git a/packages/pagetop-hljs/static/css/lioshi.min.css b/extensions/pagetop-hljs/static/css/lioshi.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/lioshi.min.css rename to extensions/pagetop-hljs/static/css/lioshi.min.css diff --git a/packages/pagetop-hljs/static/css/magula.min.css b/extensions/pagetop-hljs/static/css/magula.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/magula.min.css rename to extensions/pagetop-hljs/static/css/magula.min.css diff --git a/packages/pagetop-hljs/static/css/mono-blue.min.css b/extensions/pagetop-hljs/static/css/mono-blue.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/mono-blue.min.css rename to extensions/pagetop-hljs/static/css/mono-blue.min.css diff --git a/packages/pagetop-hljs/static/css/monokai-sublime.min.css b/extensions/pagetop-hljs/static/css/monokai-sublime.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/monokai-sublime.min.css rename to extensions/pagetop-hljs/static/css/monokai-sublime.min.css diff --git a/packages/pagetop-hljs/static/css/night-owl.min.css b/extensions/pagetop-hljs/static/css/night-owl.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/night-owl.min.css rename to extensions/pagetop-hljs/static/css/night-owl.min.css diff --git a/packages/pagetop-hljs/static/css/nnfx-dark.min.css b/extensions/pagetop-hljs/static/css/nnfx-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/nnfx-dark.min.css rename to extensions/pagetop-hljs/static/css/nnfx-dark.min.css diff --git a/packages/pagetop-hljs/static/css/nnfx-light.min.css b/extensions/pagetop-hljs/static/css/nnfx-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/nnfx-light.min.css rename to extensions/pagetop-hljs/static/css/nnfx-light.min.css diff --git a/packages/pagetop-hljs/static/css/obsidian.min.css b/extensions/pagetop-hljs/static/css/obsidian.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/obsidian.min.css rename to extensions/pagetop-hljs/static/css/obsidian.min.css diff --git a/packages/pagetop-hljs/static/css/ocean.min.css b/extensions/pagetop-hljs/static/css/ocean.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/ocean.min.css rename to extensions/pagetop-hljs/static/css/ocean.min.css diff --git a/packages/pagetop-hljs/static/css/oceanicnext.min.css b/extensions/pagetop-hljs/static/css/oceanicnext.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/oceanicnext.min.css rename to extensions/pagetop-hljs/static/css/oceanicnext.min.css diff --git a/packages/pagetop-hljs/static/css/panda-syntax-dark.min.css b/extensions/pagetop-hljs/static/css/panda-syntax-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/panda-syntax-dark.min.css rename to extensions/pagetop-hljs/static/css/panda-syntax-dark.min.css diff --git a/packages/pagetop-hljs/static/css/panda-syntax-light.min.css b/extensions/pagetop-hljs/static/css/panda-syntax-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/panda-syntax-light.min.css rename to extensions/pagetop-hljs/static/css/panda-syntax-light.min.css diff --git a/packages/pagetop-hljs/static/css/pojoaque.jpg b/extensions/pagetop-hljs/static/css/pojoaque.jpg similarity index 100% rename from packages/pagetop-hljs/static/css/pojoaque.jpg rename to extensions/pagetop-hljs/static/css/pojoaque.jpg diff --git a/packages/pagetop-hljs/static/css/pojoaque.min.css b/extensions/pagetop-hljs/static/css/pojoaque.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/pojoaque.min.css rename to extensions/pagetop-hljs/static/css/pojoaque.min.css diff --git a/packages/pagetop-hljs/static/css/purebasic.min.css b/extensions/pagetop-hljs/static/css/purebasic.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/purebasic.min.css rename to extensions/pagetop-hljs/static/css/purebasic.min.css diff --git a/packages/pagetop-hljs/static/css/qtcreator-dark.min.css b/extensions/pagetop-hljs/static/css/qtcreator-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/qtcreator-dark.min.css rename to extensions/pagetop-hljs/static/css/qtcreator-dark.min.css diff --git a/packages/pagetop-hljs/static/css/qtcreator-light.min.css b/extensions/pagetop-hljs/static/css/qtcreator-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/qtcreator-light.min.css rename to extensions/pagetop-hljs/static/css/qtcreator-light.min.css diff --git a/packages/pagetop-hljs/static/css/railscasts.min.css b/extensions/pagetop-hljs/static/css/railscasts.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/railscasts.min.css rename to extensions/pagetop-hljs/static/css/railscasts.min.css diff --git a/packages/pagetop-hljs/static/css/rainbow.min.css b/extensions/pagetop-hljs/static/css/rainbow.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/rainbow.min.css rename to extensions/pagetop-hljs/static/css/rainbow.min.css diff --git a/packages/pagetop-hljs/static/css/routeros.min.css b/extensions/pagetop-hljs/static/css/routeros.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/routeros.min.css rename to extensions/pagetop-hljs/static/css/routeros.min.css diff --git a/packages/pagetop-hljs/static/css/school-book.min.css b/extensions/pagetop-hljs/static/css/school-book.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/school-book.min.css rename to extensions/pagetop-hljs/static/css/school-book.min.css diff --git a/packages/pagetop-hljs/static/css/shades-of-purple.min.css b/extensions/pagetop-hljs/static/css/shades-of-purple.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/shades-of-purple.min.css rename to extensions/pagetop-hljs/static/css/shades-of-purple.min.css diff --git a/packages/pagetop-hljs/static/css/solarized-dark.min.css b/extensions/pagetop-hljs/static/css/solarized-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/solarized-dark.min.css rename to extensions/pagetop-hljs/static/css/solarized-dark.min.css diff --git a/packages/pagetop-hljs/static/css/solarized-light.min.css b/extensions/pagetop-hljs/static/css/solarized-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/solarized-light.min.css rename to extensions/pagetop-hljs/static/css/solarized-light.min.css diff --git a/packages/pagetop-hljs/static/css/srcery.min.css b/extensions/pagetop-hljs/static/css/srcery.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/srcery.min.css rename to extensions/pagetop-hljs/static/css/srcery.min.css diff --git a/packages/pagetop-hljs/static/css/stackoverflow-dark.min.css b/extensions/pagetop-hljs/static/css/stackoverflow-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/stackoverflow-dark.min.css rename to extensions/pagetop-hljs/static/css/stackoverflow-dark.min.css diff --git a/packages/pagetop-hljs/static/css/stackoverflow-light.min.css b/extensions/pagetop-hljs/static/css/stackoverflow-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/stackoverflow-light.min.css rename to extensions/pagetop-hljs/static/css/stackoverflow-light.min.css diff --git a/packages/pagetop-hljs/static/css/sunburst.min.css b/extensions/pagetop-hljs/static/css/sunburst.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/sunburst.min.css rename to extensions/pagetop-hljs/static/css/sunburst.min.css diff --git a/packages/pagetop-hljs/static/css/tokyo-night-dark.min.css b/extensions/pagetop-hljs/static/css/tokyo-night-dark.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tokyo-night-dark.min.css rename to extensions/pagetop-hljs/static/css/tokyo-night-dark.min.css diff --git a/packages/pagetop-hljs/static/css/tokyo-night-light.min.css b/extensions/pagetop-hljs/static/css/tokyo-night-light.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tokyo-night-light.min.css rename to extensions/pagetop-hljs/static/css/tokyo-night-light.min.css diff --git a/packages/pagetop-hljs/static/css/tomorrow-night-blue.min.css b/extensions/pagetop-hljs/static/css/tomorrow-night-blue.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tomorrow-night-blue.min.css rename to extensions/pagetop-hljs/static/css/tomorrow-night-blue.min.css diff --git a/packages/pagetop-hljs/static/css/tomorrow-night-bright.min.css b/extensions/pagetop-hljs/static/css/tomorrow-night-bright.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tomorrow-night-bright.min.css rename to extensions/pagetop-hljs/static/css/tomorrow-night-bright.min.css diff --git a/packages/pagetop-hljs/static/css/tomorrow-night.min.css b/extensions/pagetop-hljs/static/css/tomorrow-night.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tomorrow-night.min.css rename to extensions/pagetop-hljs/static/css/tomorrow-night.min.css diff --git a/packages/pagetop-hljs/static/css/tomorrow.min.css b/extensions/pagetop-hljs/static/css/tomorrow.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/tomorrow.min.css rename to extensions/pagetop-hljs/static/css/tomorrow.min.css diff --git a/packages/pagetop-hljs/static/css/vs.min.css b/extensions/pagetop-hljs/static/css/vs.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/vs.min.css rename to extensions/pagetop-hljs/static/css/vs.min.css diff --git a/packages/pagetop-hljs/static/css/vs2015.min.css b/extensions/pagetop-hljs/static/css/vs2015.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/vs2015.min.css rename to extensions/pagetop-hljs/static/css/vs2015.min.css diff --git a/packages/pagetop-hljs/static/css/xcode.min.css b/extensions/pagetop-hljs/static/css/xcode.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/xcode.min.css rename to extensions/pagetop-hljs/static/css/xcode.min.css diff --git a/packages/pagetop-hljs/static/css/xt256.min.css b/extensions/pagetop-hljs/static/css/xt256.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/xt256.min.css rename to extensions/pagetop-hljs/static/css/xt256.min.css diff --git a/packages/pagetop-hljs/static/css/zenburn.min.css b/extensions/pagetop-hljs/static/css/zenburn.min.css similarity index 100% rename from packages/pagetop-hljs/static/css/zenburn.min.css rename to extensions/pagetop-hljs/static/css/zenburn.min.css diff --git a/packages/pagetop-hljs/static/js/core.min.js b/extensions/pagetop-hljs/static/js/core.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/core.min.js rename to extensions/pagetop-hljs/static/js/core.min.js diff --git a/packages/pagetop-hljs/static/js/highlight.min.js b/extensions/pagetop-hljs/static/js/highlight.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/highlight.min.js rename to extensions/pagetop-hljs/static/js/highlight.min.js diff --git a/packages/pagetop-hljs/static/js/languages/actionscript.min.js b/extensions/pagetop-hljs/static/js/languages/actionscript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/actionscript.min.js rename to extensions/pagetop-hljs/static/js/languages/actionscript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/ada.min.js b/extensions/pagetop-hljs/static/js/languages/ada.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/ada.min.js rename to extensions/pagetop-hljs/static/js/languages/ada.min.js diff --git a/packages/pagetop-hljs/static/js/languages/apache.min.js b/extensions/pagetop-hljs/static/js/languages/apache.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/apache.min.js rename to extensions/pagetop-hljs/static/js/languages/apache.min.js diff --git a/packages/pagetop-hljs/static/js/languages/applescript.min.js b/extensions/pagetop-hljs/static/js/languages/applescript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/applescript.min.js rename to extensions/pagetop-hljs/static/js/languages/applescript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/arduino.min.js b/extensions/pagetop-hljs/static/js/languages/arduino.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/arduino.min.js rename to extensions/pagetop-hljs/static/js/languages/arduino.min.js diff --git a/packages/pagetop-hljs/static/js/languages/armasm.min.js b/extensions/pagetop-hljs/static/js/languages/armasm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/armasm.min.js rename to extensions/pagetop-hljs/static/js/languages/armasm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/asciidoc.min.js b/extensions/pagetop-hljs/static/js/languages/asciidoc.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/asciidoc.min.js rename to extensions/pagetop-hljs/static/js/languages/asciidoc.min.js diff --git a/packages/pagetop-hljs/static/js/languages/aspectj.min.js b/extensions/pagetop-hljs/static/js/languages/aspectj.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/aspectj.min.js rename to extensions/pagetop-hljs/static/js/languages/aspectj.min.js diff --git a/packages/pagetop-hljs/static/js/languages/autohotkey.min.js b/extensions/pagetop-hljs/static/js/languages/autohotkey.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/autohotkey.min.js rename to extensions/pagetop-hljs/static/js/languages/autohotkey.min.js diff --git a/packages/pagetop-hljs/static/js/languages/avrasm.min.js b/extensions/pagetop-hljs/static/js/languages/avrasm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/avrasm.min.js rename to extensions/pagetop-hljs/static/js/languages/avrasm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/awk.min.js b/extensions/pagetop-hljs/static/js/languages/awk.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/awk.min.js rename to extensions/pagetop-hljs/static/js/languages/awk.min.js diff --git a/packages/pagetop-hljs/static/js/languages/bash.min.js b/extensions/pagetop-hljs/static/js/languages/bash.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/bash.min.js rename to extensions/pagetop-hljs/static/js/languages/bash.min.js diff --git a/packages/pagetop-hljs/static/js/languages/basic.min.js b/extensions/pagetop-hljs/static/js/languages/basic.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/basic.min.js rename to extensions/pagetop-hljs/static/js/languages/basic.min.js diff --git a/packages/pagetop-hljs/static/js/languages/c.min.js b/extensions/pagetop-hljs/static/js/languages/c.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/c.min.js rename to extensions/pagetop-hljs/static/js/languages/c.min.js diff --git a/packages/pagetop-hljs/static/js/languages/clojure-repl.min.js b/extensions/pagetop-hljs/static/js/languages/clojure-repl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/clojure-repl.min.js rename to extensions/pagetop-hljs/static/js/languages/clojure-repl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/clojure.min.js b/extensions/pagetop-hljs/static/js/languages/clojure.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/clojure.min.js rename to extensions/pagetop-hljs/static/js/languages/clojure.min.js diff --git a/packages/pagetop-hljs/static/js/languages/cmake.min.js b/extensions/pagetop-hljs/static/js/languages/cmake.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/cmake.min.js rename to extensions/pagetop-hljs/static/js/languages/cmake.min.js diff --git a/packages/pagetop-hljs/static/js/languages/coffeescript.min.js b/extensions/pagetop-hljs/static/js/languages/coffeescript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/coffeescript.min.js rename to extensions/pagetop-hljs/static/js/languages/coffeescript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/cpp.min.js b/extensions/pagetop-hljs/static/js/languages/cpp.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/cpp.min.js rename to extensions/pagetop-hljs/static/js/languages/cpp.min.js diff --git a/packages/pagetop-hljs/static/js/languages/crystal.min.js b/extensions/pagetop-hljs/static/js/languages/crystal.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/crystal.min.js rename to extensions/pagetop-hljs/static/js/languages/crystal.min.js diff --git a/packages/pagetop-hljs/static/js/languages/csharp.min.js b/extensions/pagetop-hljs/static/js/languages/csharp.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/csharp.min.js rename to extensions/pagetop-hljs/static/js/languages/csharp.min.js diff --git a/packages/pagetop-hljs/static/js/languages/css.min.js b/extensions/pagetop-hljs/static/js/languages/css.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/css.min.js rename to extensions/pagetop-hljs/static/js/languages/css.min.js diff --git a/packages/pagetop-hljs/static/js/languages/d.min.js b/extensions/pagetop-hljs/static/js/languages/d.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/d.min.js rename to extensions/pagetop-hljs/static/js/languages/d.min.js diff --git a/packages/pagetop-hljs/static/js/languages/dart.min.js b/extensions/pagetop-hljs/static/js/languages/dart.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/dart.min.js rename to extensions/pagetop-hljs/static/js/languages/dart.min.js diff --git a/packages/pagetop-hljs/static/js/languages/delphi.min.js b/extensions/pagetop-hljs/static/js/languages/delphi.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/delphi.min.js rename to extensions/pagetop-hljs/static/js/languages/delphi.min.js diff --git a/packages/pagetop-hljs/static/js/languages/diff.min.js b/extensions/pagetop-hljs/static/js/languages/diff.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/diff.min.js rename to extensions/pagetop-hljs/static/js/languages/diff.min.js diff --git a/packages/pagetop-hljs/static/js/languages/django.min.js b/extensions/pagetop-hljs/static/js/languages/django.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/django.min.js rename to extensions/pagetop-hljs/static/js/languages/django.min.js diff --git a/packages/pagetop-hljs/static/js/languages/dns.min.js b/extensions/pagetop-hljs/static/js/languages/dns.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/dns.min.js rename to extensions/pagetop-hljs/static/js/languages/dns.min.js diff --git a/packages/pagetop-hljs/static/js/languages/dockerfile.min.js b/extensions/pagetop-hljs/static/js/languages/dockerfile.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/dockerfile.min.js rename to extensions/pagetop-hljs/static/js/languages/dockerfile.min.js diff --git a/packages/pagetop-hljs/static/js/languages/dos.min.js b/extensions/pagetop-hljs/static/js/languages/dos.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/dos.min.js rename to extensions/pagetop-hljs/static/js/languages/dos.min.js diff --git a/packages/pagetop-hljs/static/js/languages/elixir.min.js b/extensions/pagetop-hljs/static/js/languages/elixir.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/elixir.min.js rename to extensions/pagetop-hljs/static/js/languages/elixir.min.js diff --git a/packages/pagetop-hljs/static/js/languages/elm.min.js b/extensions/pagetop-hljs/static/js/languages/elm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/elm.min.js rename to extensions/pagetop-hljs/static/js/languages/elm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/erb.min.js b/extensions/pagetop-hljs/static/js/languages/erb.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/erb.min.js rename to extensions/pagetop-hljs/static/js/languages/erb.min.js diff --git a/packages/pagetop-hljs/static/js/languages/erlang-repl.min.js b/extensions/pagetop-hljs/static/js/languages/erlang-repl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/erlang-repl.min.js rename to extensions/pagetop-hljs/static/js/languages/erlang-repl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/erlang.min.js b/extensions/pagetop-hljs/static/js/languages/erlang.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/erlang.min.js rename to extensions/pagetop-hljs/static/js/languages/erlang.min.js diff --git a/packages/pagetop-hljs/static/js/languages/fortran.min.js b/extensions/pagetop-hljs/static/js/languages/fortran.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/fortran.min.js rename to extensions/pagetop-hljs/static/js/languages/fortran.min.js diff --git a/packages/pagetop-hljs/static/js/languages/fsharp.min.js b/extensions/pagetop-hljs/static/js/languages/fsharp.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/fsharp.min.js rename to extensions/pagetop-hljs/static/js/languages/fsharp.min.js diff --git a/packages/pagetop-hljs/static/js/languages/go.min.js b/extensions/pagetop-hljs/static/js/languages/go.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/go.min.js rename to extensions/pagetop-hljs/static/js/languages/go.min.js diff --git a/packages/pagetop-hljs/static/js/languages/graphql.min.js b/extensions/pagetop-hljs/static/js/languages/graphql.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/graphql.min.js rename to extensions/pagetop-hljs/static/js/languages/graphql.min.js diff --git a/packages/pagetop-hljs/static/js/languages/handlebars.min.js b/extensions/pagetop-hljs/static/js/languages/handlebars.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/handlebars.min.js rename to extensions/pagetop-hljs/static/js/languages/handlebars.min.js diff --git a/packages/pagetop-hljs/static/js/languages/haskell.min.js b/extensions/pagetop-hljs/static/js/languages/haskell.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/haskell.min.js rename to extensions/pagetop-hljs/static/js/languages/haskell.min.js diff --git a/packages/pagetop-hljs/static/js/languages/http.min.js b/extensions/pagetop-hljs/static/js/languages/http.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/http.min.js rename to extensions/pagetop-hljs/static/js/languages/http.min.js diff --git a/packages/pagetop-hljs/static/js/languages/ini.min.js b/extensions/pagetop-hljs/static/js/languages/ini.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/ini.min.js rename to extensions/pagetop-hljs/static/js/languages/ini.min.js diff --git a/packages/pagetop-hljs/static/js/languages/java.min.js b/extensions/pagetop-hljs/static/js/languages/java.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/java.min.js rename to extensions/pagetop-hljs/static/js/languages/java.min.js diff --git a/packages/pagetop-hljs/static/js/languages/javascript.min.js b/extensions/pagetop-hljs/static/js/languages/javascript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/javascript.min.js rename to extensions/pagetop-hljs/static/js/languages/javascript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/json.min.js b/extensions/pagetop-hljs/static/js/languages/json.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/json.min.js rename to extensions/pagetop-hljs/static/js/languages/json.min.js diff --git a/packages/pagetop-hljs/static/js/languages/julia-repl.min.js b/extensions/pagetop-hljs/static/js/languages/julia-repl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/julia-repl.min.js rename to extensions/pagetop-hljs/static/js/languages/julia-repl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/julia.min.js b/extensions/pagetop-hljs/static/js/languages/julia.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/julia.min.js rename to extensions/pagetop-hljs/static/js/languages/julia.min.js diff --git a/packages/pagetop-hljs/static/js/languages/kotlin.min.js b/extensions/pagetop-hljs/static/js/languages/kotlin.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/kotlin.min.js rename to extensions/pagetop-hljs/static/js/languages/kotlin.min.js diff --git a/packages/pagetop-hljs/static/js/languages/latex.min.js b/extensions/pagetop-hljs/static/js/languages/latex.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/latex.min.js rename to extensions/pagetop-hljs/static/js/languages/latex.min.js diff --git a/packages/pagetop-hljs/static/js/languages/less.min.js b/extensions/pagetop-hljs/static/js/languages/less.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/less.min.js rename to extensions/pagetop-hljs/static/js/languages/less.min.js diff --git a/packages/pagetop-hljs/static/js/languages/lisp.min.js b/extensions/pagetop-hljs/static/js/languages/lisp.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/lisp.min.js rename to extensions/pagetop-hljs/static/js/languages/lisp.min.js diff --git a/packages/pagetop-hljs/static/js/languages/llvm.min.js b/extensions/pagetop-hljs/static/js/languages/llvm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/llvm.min.js rename to extensions/pagetop-hljs/static/js/languages/llvm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/lua.min.js b/extensions/pagetop-hljs/static/js/languages/lua.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/lua.min.js rename to extensions/pagetop-hljs/static/js/languages/lua.min.js diff --git a/packages/pagetop-hljs/static/js/languages/makefile.min.js b/extensions/pagetop-hljs/static/js/languages/makefile.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/makefile.min.js rename to extensions/pagetop-hljs/static/js/languages/makefile.min.js diff --git a/packages/pagetop-hljs/static/js/languages/markdown.min.js b/extensions/pagetop-hljs/static/js/languages/markdown.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/markdown.min.js rename to extensions/pagetop-hljs/static/js/languages/markdown.min.js diff --git a/packages/pagetop-hljs/static/js/languages/matlab.min.js b/extensions/pagetop-hljs/static/js/languages/matlab.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/matlab.min.js rename to extensions/pagetop-hljs/static/js/languages/matlab.min.js diff --git a/packages/pagetop-hljs/static/js/languages/nginx.min.js b/extensions/pagetop-hljs/static/js/languages/nginx.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/nginx.min.js rename to extensions/pagetop-hljs/static/js/languages/nginx.min.js diff --git a/packages/pagetop-hljs/static/js/languages/node-repl.min.js b/extensions/pagetop-hljs/static/js/languages/node-repl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/node-repl.min.js rename to extensions/pagetop-hljs/static/js/languages/node-repl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/objectivec.min.js b/extensions/pagetop-hljs/static/js/languages/objectivec.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/objectivec.min.js rename to extensions/pagetop-hljs/static/js/languages/objectivec.min.js diff --git a/packages/pagetop-hljs/static/js/languages/ocaml.min.js b/extensions/pagetop-hljs/static/js/languages/ocaml.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/ocaml.min.js rename to extensions/pagetop-hljs/static/js/languages/ocaml.min.js diff --git a/packages/pagetop-hljs/static/js/languages/perl.min.js b/extensions/pagetop-hljs/static/js/languages/perl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/perl.min.js rename to extensions/pagetop-hljs/static/js/languages/perl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/pgsql.min.js b/extensions/pagetop-hljs/static/js/languages/pgsql.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/pgsql.min.js rename to extensions/pagetop-hljs/static/js/languages/pgsql.min.js diff --git a/packages/pagetop-hljs/static/js/languages/php-template.min.js b/extensions/pagetop-hljs/static/js/languages/php-template.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/php-template.min.js rename to extensions/pagetop-hljs/static/js/languages/php-template.min.js diff --git a/packages/pagetop-hljs/static/js/languages/php.min.js b/extensions/pagetop-hljs/static/js/languages/php.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/php.min.js rename to extensions/pagetop-hljs/static/js/languages/php.min.js diff --git a/packages/pagetop-hljs/static/js/languages/plaintext.min.js b/extensions/pagetop-hljs/static/js/languages/plaintext.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/plaintext.min.js rename to extensions/pagetop-hljs/static/js/languages/plaintext.min.js diff --git a/packages/pagetop-hljs/static/js/languages/powershell.min.js b/extensions/pagetop-hljs/static/js/languages/powershell.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/powershell.min.js rename to extensions/pagetop-hljs/static/js/languages/powershell.min.js diff --git a/packages/pagetop-hljs/static/js/languages/prolog.min.js b/extensions/pagetop-hljs/static/js/languages/prolog.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/prolog.min.js rename to extensions/pagetop-hljs/static/js/languages/prolog.min.js diff --git a/packages/pagetop-hljs/static/js/languages/properties.min.js b/extensions/pagetop-hljs/static/js/languages/properties.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/properties.min.js rename to extensions/pagetop-hljs/static/js/languages/properties.min.js diff --git a/packages/pagetop-hljs/static/js/languages/python-repl.min.js b/extensions/pagetop-hljs/static/js/languages/python-repl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/python-repl.min.js rename to extensions/pagetop-hljs/static/js/languages/python-repl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/python.min.js b/extensions/pagetop-hljs/static/js/languages/python.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/python.min.js rename to extensions/pagetop-hljs/static/js/languages/python.min.js diff --git a/packages/pagetop-hljs/static/js/languages/r.min.js b/extensions/pagetop-hljs/static/js/languages/r.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/r.min.js rename to extensions/pagetop-hljs/static/js/languages/r.min.js diff --git a/packages/pagetop-hljs/static/js/languages/ruby.min.js b/extensions/pagetop-hljs/static/js/languages/ruby.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/ruby.min.js rename to extensions/pagetop-hljs/static/js/languages/ruby.min.js diff --git a/packages/pagetop-hljs/static/js/languages/rust.min.js b/extensions/pagetop-hljs/static/js/languages/rust.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/rust.min.js rename to extensions/pagetop-hljs/static/js/languages/rust.min.js diff --git a/packages/pagetop-hljs/static/js/languages/scala.min.js b/extensions/pagetop-hljs/static/js/languages/scala.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/scala.min.js rename to extensions/pagetop-hljs/static/js/languages/scala.min.js diff --git a/packages/pagetop-hljs/static/js/languages/scheme.min.js b/extensions/pagetop-hljs/static/js/languages/scheme.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/scheme.min.js rename to extensions/pagetop-hljs/static/js/languages/scheme.min.js diff --git a/packages/pagetop-hljs/static/js/languages/scilab.min.js b/extensions/pagetop-hljs/static/js/languages/scilab.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/scilab.min.js rename to extensions/pagetop-hljs/static/js/languages/scilab.min.js diff --git a/packages/pagetop-hljs/static/js/languages/scss.min.js b/extensions/pagetop-hljs/static/js/languages/scss.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/scss.min.js rename to extensions/pagetop-hljs/static/js/languages/scss.min.js diff --git a/packages/pagetop-hljs/static/js/languages/shell.min.js b/extensions/pagetop-hljs/static/js/languages/shell.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/shell.min.js rename to extensions/pagetop-hljs/static/js/languages/shell.min.js diff --git a/packages/pagetop-hljs/static/js/languages/smalltalk.min.js b/extensions/pagetop-hljs/static/js/languages/smalltalk.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/smalltalk.min.js rename to extensions/pagetop-hljs/static/js/languages/smalltalk.min.js diff --git a/packages/pagetop-hljs/static/js/languages/sql.min.js b/extensions/pagetop-hljs/static/js/languages/sql.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/sql.min.js rename to extensions/pagetop-hljs/static/js/languages/sql.min.js diff --git a/packages/pagetop-hljs/static/js/languages/swift.min.js b/extensions/pagetop-hljs/static/js/languages/swift.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/swift.min.js rename to extensions/pagetop-hljs/static/js/languages/swift.min.js diff --git a/packages/pagetop-hljs/static/js/languages/tcl.min.js b/extensions/pagetop-hljs/static/js/languages/tcl.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/tcl.min.js rename to extensions/pagetop-hljs/static/js/languages/tcl.min.js diff --git a/packages/pagetop-hljs/static/js/languages/twig.min.js b/extensions/pagetop-hljs/static/js/languages/twig.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/twig.min.js rename to extensions/pagetop-hljs/static/js/languages/twig.min.js diff --git a/packages/pagetop-hljs/static/js/languages/typescript.min.js b/extensions/pagetop-hljs/static/js/languages/typescript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/typescript.min.js rename to extensions/pagetop-hljs/static/js/languages/typescript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/vbnet.min.js b/extensions/pagetop-hljs/static/js/languages/vbnet.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/vbnet.min.js rename to extensions/pagetop-hljs/static/js/languages/vbnet.min.js diff --git a/packages/pagetop-hljs/static/js/languages/vbscript.min.js b/extensions/pagetop-hljs/static/js/languages/vbscript.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/vbscript.min.js rename to extensions/pagetop-hljs/static/js/languages/vbscript.min.js diff --git a/packages/pagetop-hljs/static/js/languages/wasm.min.js b/extensions/pagetop-hljs/static/js/languages/wasm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/wasm.min.js rename to extensions/pagetop-hljs/static/js/languages/wasm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/x86asm.min.js b/extensions/pagetop-hljs/static/js/languages/x86asm.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/x86asm.min.js rename to extensions/pagetop-hljs/static/js/languages/x86asm.min.js diff --git a/packages/pagetop-hljs/static/js/languages/xml.min.js b/extensions/pagetop-hljs/static/js/languages/xml.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/xml.min.js rename to extensions/pagetop-hljs/static/js/languages/xml.min.js diff --git a/packages/pagetop-hljs/static/js/languages/yaml.min.js b/extensions/pagetop-hljs/static/js/languages/yaml.min.js similarity index 100% rename from packages/pagetop-hljs/static/js/languages/yaml.min.js rename to extensions/pagetop-hljs/static/js/languages/yaml.min.js diff --git a/packages/pagetop-mdbook/.gitattributes b/extensions/pagetop-mdbook/.gitattributes similarity index 100% rename from packages/pagetop-mdbook/.gitattributes rename to extensions/pagetop-mdbook/.gitattributes diff --git a/packages/pagetop-mdbook/Cargo.toml b/extensions/pagetop-mdbook/Cargo.toml similarity index 100% rename from packages/pagetop-mdbook/Cargo.toml rename to extensions/pagetop-mdbook/Cargo.toml diff --git a/packages/pagetop-mdbook/README.md b/extensions/pagetop-mdbook/README.md similarity index 100% rename from packages/pagetop-mdbook/README.md rename to extensions/pagetop-mdbook/README.md diff --git a/packages/pagetop-mdbook/build.rs b/extensions/pagetop-mdbook/build.rs similarity index 100% rename from packages/pagetop-mdbook/build.rs rename to extensions/pagetop-mdbook/build.rs diff --git a/packages/pagetop-mdbook/src/build.rs b/extensions/pagetop-mdbook/src/build.rs similarity index 100% rename from packages/pagetop-mdbook/src/build.rs rename to extensions/pagetop-mdbook/src/build.rs diff --git a/packages/pagetop-mdbook/src/lib.rs b/extensions/pagetop-mdbook/src/lib.rs similarity index 99% rename from packages/pagetop-mdbook/src/lib.rs rename to extensions/pagetop-mdbook/src/lib.rs index 20490557..7a8fa331 100644 --- a/packages/pagetop-mdbook/src/lib.rs +++ b/extensions/pagetop-mdbook/src/lib.rs @@ -10,7 +10,7 @@ pub mod build; pub struct MdBook; -impl PackageTrait for MdBook { +impl ExtensionTrait for MdBook { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { include_files_service!(scfg, mdbook => "/mdbook"); } diff --git a/packages/pagetop-mdbook/static/FontAwesome/css/font-awesome.css b/extensions/pagetop-mdbook/static/FontAwesome/css/font-awesome.css similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/css/font-awesome.css rename to extensions/pagetop-mdbook/static/FontAwesome/css/font-awesome.css diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/FontAwesome.ttf b/extensions/pagetop-mdbook/static/FontAwesome/fonts/FontAwesome.ttf similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/FontAwesome.ttf rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/FontAwesome.ttf diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.eot b/extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.eot similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.eot rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.eot diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.svg b/extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.svg similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.svg rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.svg diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.ttf b/extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.ttf rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.ttf diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff b/extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff diff --git a/packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff2 b/extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff2 rename to extensions/pagetop-mdbook/static/FontAwesome/fonts/fontawesome-webfont.woff2 diff --git a/packages/pagetop-mdbook/static/ayu-highlight.css b/extensions/pagetop-mdbook/static/ayu-highlight.css similarity index 100% rename from packages/pagetop-mdbook/static/ayu-highlight.css rename to extensions/pagetop-mdbook/static/ayu-highlight.css diff --git a/packages/pagetop-mdbook/static/css/chrome.css b/extensions/pagetop-mdbook/static/css/chrome.css similarity index 100% rename from packages/pagetop-mdbook/static/css/chrome.css rename to extensions/pagetop-mdbook/static/css/chrome.css diff --git a/packages/pagetop-mdbook/static/css/general.css b/extensions/pagetop-mdbook/static/css/general.css similarity index 100% rename from packages/pagetop-mdbook/static/css/general.css rename to extensions/pagetop-mdbook/static/css/general.css diff --git a/packages/pagetop-mdbook/static/css/print.css b/extensions/pagetop-mdbook/static/css/print.css similarity index 100% rename from packages/pagetop-mdbook/static/css/print.css rename to extensions/pagetop-mdbook/static/css/print.css diff --git a/packages/pagetop-mdbook/static/css/variables.css b/extensions/pagetop-mdbook/static/css/variables.css similarity index 100% rename from packages/pagetop-mdbook/static/css/variables.css rename to extensions/pagetop-mdbook/static/css/variables.css diff --git a/packages/pagetop-mdbook/static/fonts/OPEN-SANS-LICENSE.txt b/extensions/pagetop-mdbook/static/fonts/OPEN-SANS-LICENSE.txt similarity index 100% rename from packages/pagetop-mdbook/static/fonts/OPEN-SANS-LICENSE.txt rename to extensions/pagetop-mdbook/static/fonts/OPEN-SANS-LICENSE.txt diff --git a/packages/pagetop-mdbook/static/fonts/SOURCE-CODE-PRO-LICENSE.txt b/extensions/pagetop-mdbook/static/fonts/SOURCE-CODE-PRO-LICENSE.txt similarity index 100% rename from packages/pagetop-mdbook/static/fonts/SOURCE-CODE-PRO-LICENSE.txt rename to extensions/pagetop-mdbook/static/fonts/SOURCE-CODE-PRO-LICENSE.txt diff --git a/packages/pagetop-mdbook/static/fonts/fonts.css b/extensions/pagetop-mdbook/static/fonts/fonts.css similarity index 100% rename from packages/pagetop-mdbook/static/fonts/fonts.css rename to extensions/pagetop-mdbook/static/fonts/fonts.css diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300italic.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300italic.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300italic.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-300italic.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600italic.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600italic.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600italic.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-600italic.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700italic.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700italic.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700italic.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-700italic.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800italic.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800italic.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800italic.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-800italic.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-italic.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-italic.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-italic.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-italic.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-regular.woff2 b/extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-regular.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-regular.woff2 rename to extensions/pagetop-mdbook/static/fonts/open-sans-v17-all-charsets-regular.woff2 diff --git a/packages/pagetop-mdbook/static/fonts/source-code-pro-v11-all-charsets-500.woff2 b/extensions/pagetop-mdbook/static/fonts/source-code-pro-v11-all-charsets-500.woff2 similarity index 100% rename from packages/pagetop-mdbook/static/fonts/source-code-pro-v11-all-charsets-500.woff2 rename to extensions/pagetop-mdbook/static/fonts/source-code-pro-v11-all-charsets-500.woff2 diff --git a/packages/pagetop-mdbook/static/highlight.css b/extensions/pagetop-mdbook/static/highlight.css similarity index 100% rename from packages/pagetop-mdbook/static/highlight.css rename to extensions/pagetop-mdbook/static/highlight.css diff --git a/packages/pagetop-mdbook/static/navigators.js b/extensions/pagetop-mdbook/static/navigators.js similarity index 100% rename from packages/pagetop-mdbook/static/navigators.js rename to extensions/pagetop-mdbook/static/navigators.js diff --git a/packages/pagetop-mdbook/static/tomorrow-night.css b/extensions/pagetop-mdbook/static/tomorrow-night.css similarity index 100% rename from packages/pagetop-mdbook/static/tomorrow-night.css rename to extensions/pagetop-mdbook/static/tomorrow-night.css diff --git a/packages/pagetop-mdbook/template/book.toml b/extensions/pagetop-mdbook/template/book.toml similarity index 100% rename from packages/pagetop-mdbook/template/book.toml rename to extensions/pagetop-mdbook/template/book.toml diff --git a/packages/pagetop-mdbook/template/theme/book.js b/extensions/pagetop-mdbook/template/theme/book.js similarity index 100% rename from packages/pagetop-mdbook/template/theme/book.js rename to extensions/pagetop-mdbook/template/theme/book.js diff --git a/packages/pagetop-mdbook/template/theme/highlight.css b/extensions/pagetop-mdbook/template/theme/highlight.css similarity index 100% rename from packages/pagetop-mdbook/template/theme/highlight.css rename to extensions/pagetop-mdbook/template/theme/highlight.css diff --git a/packages/pagetop-mdbook/template/theme/highlight.js b/extensions/pagetop-mdbook/template/theme/highlight.js similarity index 100% rename from packages/pagetop-mdbook/template/theme/highlight.js rename to extensions/pagetop-mdbook/template/theme/highlight.js diff --git a/packages/pagetop-mdbook/template/theme/index.hbs b/extensions/pagetop-mdbook/template/theme/index.hbs similarity index 100% rename from packages/pagetop-mdbook/template/theme/index.hbs rename to extensions/pagetop-mdbook/template/theme/index.hbs diff --git a/packages/pagetop-seaorm/Cargo.toml b/extensions/pagetop-seaorm/Cargo.toml similarity index 100% rename from packages/pagetop-seaorm/Cargo.toml rename to extensions/pagetop-seaorm/Cargo.toml diff --git a/packages/pagetop-seaorm/README.md b/extensions/pagetop-seaorm/README.md similarity index 96% rename from packages/pagetop-seaorm/README.md rename to extensions/pagetop-seaorm/README.md index f8b08cb0..2d720bda 100644 --- a/packages/pagetop-seaorm/README.md +++ b/extensions/pagetop-seaorm/README.md @@ -16,7 +16,7 @@ Utiliza [SQLx](https://crates.io/crates/sqlx) y [SeaQuery](https://crates.io/crates/sea-query) para exportar sus funcionalidades, y también integra en código una versión adaptada de [SeaORM Migration](https://github.com/SeaQL/sea-orm/tree/1.1.1/sea-orm-migration/src) (v1.1.1) para -permitir migraciones independientes para cada paquete del proyecto. +permitir migraciones independientes para cada extensión del proyecto. ## Sobre PageTop diff --git a/packages/pagetop-seaorm/src/config.rs b/extensions/pagetop-seaorm/src/config.rs similarity index 100% rename from packages/pagetop-seaorm/src/config.rs rename to extensions/pagetop-seaorm/src/config.rs diff --git a/packages/pagetop-seaorm/src/db.rs b/extensions/pagetop-seaorm/src/db.rs similarity index 98% rename from packages/pagetop-seaorm/src/db.rs rename to extensions/pagetop-seaorm/src/db.rs index cece9a8f..35c435dc 100644 --- a/packages/pagetop-seaorm/src/db.rs +++ b/extensions/pagetop-seaorm/src/db.rs @@ -13,7 +13,7 @@ pub(crate) use dbconn::{run_now, DBCONN}; // The migration module is a customized version of the sea_orm_migration module (v1.0.0) // https://github.com/SeaQL/sea-orm/tree/1.0.0/sea-orm-migration to avoid errors caused by the -// package paradigm of PageTop. Files integrated from original: +// extensions paradigm of PageTop. Files integrated from original: // // lib.rs => db/migration.rs . . . . . . . . . . . . . . (excluding some modules and exports) // connection.rs => db/migration/connection.rs . . . . . . . . . . . . . . (full integration) diff --git a/packages/pagetop-seaorm/src/db/dbconn.rs b/extensions/pagetop-seaorm/src/db/dbconn.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/dbconn.rs rename to extensions/pagetop-seaorm/src/db/dbconn.rs diff --git a/packages/pagetop-seaorm/src/db/migration.rs b/extensions/pagetop-seaorm/src/db/migration.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration.rs rename to extensions/pagetop-seaorm/src/db/migration.rs diff --git a/packages/pagetop-seaorm/src/db/migration/connection.rs b/extensions/pagetop-seaorm/src/db/migration/connection.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/connection.rs rename to extensions/pagetop-seaorm/src/db/migration/connection.rs diff --git a/packages/pagetop-seaorm/src/db/migration/manager.rs b/extensions/pagetop-seaorm/src/db/migration/manager.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/manager.rs rename to extensions/pagetop-seaorm/src/db/migration/manager.rs diff --git a/packages/pagetop-seaorm/src/db/migration/migrator.rs b/extensions/pagetop-seaorm/src/db/migration/migrator.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/migrator.rs rename to extensions/pagetop-seaorm/src/db/migration/migrator.rs diff --git a/packages/pagetop-seaorm/src/db/migration/prelude.rs b/extensions/pagetop-seaorm/src/db/migration/prelude.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/prelude.rs rename to extensions/pagetop-seaorm/src/db/migration/prelude.rs diff --git a/packages/pagetop-seaorm/src/db/migration/schema.rs b/extensions/pagetop-seaorm/src/db/migration/schema.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/schema.rs rename to extensions/pagetop-seaorm/src/db/migration/schema.rs diff --git a/packages/pagetop-seaorm/src/db/migration/seaql_migrations.rs b/extensions/pagetop-seaorm/src/db/migration/seaql_migrations.rs similarity index 100% rename from packages/pagetop-seaorm/src/db/migration/seaql_migrations.rs rename to extensions/pagetop-seaorm/src/db/migration/seaql_migrations.rs diff --git a/packages/pagetop-seaorm/src/lib.rs b/extensions/pagetop-seaorm/src/lib.rs similarity index 88% rename from packages/pagetop-seaorm/src/lib.rs rename to extensions/pagetop-seaorm/src/lib.rs index 66257c1e..8ab057e7 100644 --- a/packages/pagetop-seaorm/src/lib.rs +++ b/extensions/pagetop-seaorm/src/lib.rs @@ -29,16 +29,16 @@ pub mod config; pub mod db; -/// Implementa [`PackageTrait`] y API específica. +/// Implementa [`ExtensionTrait`] y API específica. pub struct SeaORM; -impl PackageTrait for SeaORM { +impl ExtensionTrait for SeaORM { fn name(&self) -> L10n { - L10n::t("package_name", &LOCALES_SEAORM) + L10n::t("extension_name", &LOCALES_SEAORM) } fn description(&self) -> L10n { - L10n::t("package_description", &LOCALES_SEAORM) + L10n::t("extension_description", &LOCALES_SEAORM) } fn init(&self) { diff --git a/extensions/pagetop-seaorm/src/locale/en-US/package.ftl b/extensions/pagetop-seaorm/src/locale/en-US/package.ftl new file mode 100644 index 00000000..cfc284f0 --- /dev/null +++ b/extensions/pagetop-seaorm/src/locale/en-US/package.ftl @@ -0,0 +1,2 @@ +extension_name = SeaORM support +extension_description = Integrate SeaORM as the database framework for PageTop applications. diff --git a/extensions/pagetop-seaorm/src/locale/es-ES/package.ftl b/extensions/pagetop-seaorm/src/locale/es-ES/package.ftl new file mode 100644 index 00000000..6d8d4701 --- /dev/null +++ b/extensions/pagetop-seaorm/src/locale/es-ES/package.ftl @@ -0,0 +1,2 @@ +extension_name = Soporte a SeaORM +extension_description = Integra SeaORM para trabajar con bases de datos en aplicaciones PageTop. diff --git a/helpers/pagetop-build/src/lib.rs b/helpers/pagetop-build/src/lib.rs index 6175f207..e08c5044 100644 --- a/helpers/pagetop-build/src/lib.rs +++ b/helpers/pagetop-build/src/lib.rs @@ -102,9 +102,9 @@ //! //! include_files!(guides); //! -//! pub struct MyPackage; +//! pub struct MyExtension; //! -//! impl PackageTrait for MyPackage { +//! impl ExtensionTrait for MyExtension { //! // Configures a web service to expose the `guides` resources at `/route/to/guides`. //! fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { //! include_files_service!(scfg, guides => "/route/to/guides"); diff --git a/packages/pagetop-seaorm/src/locale/en-US/package.ftl b/packages/pagetop-seaorm/src/locale/en-US/package.ftl deleted file mode 100644 index d1c53cc1..00000000 --- a/packages/pagetop-seaorm/src/locale/en-US/package.ftl +++ /dev/null @@ -1,2 +0,0 @@ -package_name = SeaORM support -package_description = Integrate SeaORM as the database framework for PageTop applications. diff --git a/packages/pagetop-seaorm/src/locale/es-ES/package.ftl b/packages/pagetop-seaorm/src/locale/es-ES/package.ftl deleted file mode 100644 index 3e4a71df..00000000 --- a/packages/pagetop-seaorm/src/locale/es-ES/package.ftl +++ /dev/null @@ -1,2 +0,0 @@ -package_name = Soporte a SeaORM -package_description = Integra SeaORM para trabajar con bases de datos en aplicaciones PageTop. diff --git a/pagetop/examples/hello-name.rs b/pagetop/examples/hello-name.rs index 92ca467c..6f59abc4 100644 --- a/pagetop/examples/hello-name.rs +++ b/pagetop/examples/hello-name.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; struct HelloName; -impl PackageTrait for HelloName { +impl ExtensionTrait for HelloName { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { scfg.route("/hello/{name}", service::web::get().to(hello_name)); } diff --git a/pagetop/examples/hello-world.rs b/pagetop/examples/hello-world.rs index 17c1e9d3..9ab1cc98 100644 --- a/pagetop/examples/hello-world.rs +++ b/pagetop/examples/hello-world.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; struct HelloWorld; -impl PackageTrait for HelloWorld { +impl ExtensionTrait for HelloWorld { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { scfg.route("/", service::web::get().to(hello_world)); } diff --git a/pagetop/src/app.rs b/pagetop/src/app.rs index 2a1a1a95..fbb72653 100644 --- a/pagetop/src/app.rs +++ b/pagetop/src/app.rs @@ -2,7 +2,7 @@ mod figfont; -use crate::core::{package, package::PackageRef}; +use crate::core::{extension, extension::ExtensionRef}; use crate::html::Markup; use crate::response::page::{ErrorPage, ResultPage}; use crate::service::HttpRequest; @@ -26,18 +26,18 @@ impl Default for Application { } impl Application { - /// Creates a new application instance without any package. + /// Creates a new application instance without any extension. pub fn new() -> Self { Self::internal_prepare(None) } - /// Prepares an application instance with a specific package. - pub fn prepare(root_package: PackageRef) -> Self { - Self::internal_prepare(Some(root_package)) + /// Prepares an application instance with a specific extension. + pub fn prepare(root_extension: ExtensionRef) -> Self { + Self::internal_prepare(Some(root_extension)) } - // Internal method to prepare the application, optionally with a package. - fn internal_prepare(root_package: Option) -> Self { + // Internal method to prepare the application, optionally with a extension. + fn internal_prepare(root_extension: Option) -> Self { // On startup, show the application banner. Self::show_banner(); @@ -47,14 +47,14 @@ impl Application { // Validates the default language identifier. LazyLock::force(&locale::DEFAULT_LANGID); - // Registers the application's packages. - package::all::register_packages(root_package); + // Registers the application's extensions. + extension::all::register_extensions(root_extension); - // Registers package actions. - package::all::register_actions(); + // Registers extension actions. + extension::all::register_actions(); - // Initializes the packages. - package::all::init_packages(); + // Initializes the extensions. + extension::all::init_extensions(); Self } @@ -158,7 +158,7 @@ impl Application { >, > { service::App::new() - .configure(package::all::configure_services) + .configure(extension::all::configure_services) .default_service(service::web::route().to(service_not_found)) } } diff --git a/pagetop/src/base.rs b/pagetop/src/base.rs index da61b528..ff9de1a2 100644 --- a/pagetop/src/base.rs +++ b/pagetop/src/base.rs @@ -1,9 +1,9 @@ -//! Acciones, componentes, paquetes y temas base de `PageTop`. +//! Acciones, componentes, extensiones y temas base de `PageTop`. pub mod action; pub mod component; -pub mod package; +pub mod extension; pub mod theme; diff --git a/pagetop/src/base/component.rs b/pagetop/src/base/component.rs index 02d8d521..7a7daf8a 100644 --- a/pagetop/src/base/component.rs +++ b/pagetop/src/base/component.rs @@ -1,14 +1,17 @@ -mod html; -pub use html::Html; - -mod fluent; -pub use fluent::Fluent; - mod error403; pub use error403::Error403; mod error404; pub use error404::Error404; +mod html; +pub use html::Html; + +mod fluent; +pub use fluent::Fluent; + mod region; pub use region::Region; + +mod logo; +pub use logo::{PageTopLogo, PageTopLogoStyle}; diff --git a/pagetop/src/base/component/logo.rs b/pagetop/src/base/component/logo.rs new file mode 100644 index 00000000..d3a13f20 --- /dev/null +++ b/pagetop/src/base/component/logo.rs @@ -0,0 +1,86 @@ +use crate::prelude::*; + +#[derive(AutoDefault)] +pub enum PageTopLogoStyle { + #[default] + Color, + LineDark, + LineLight, + LineRGB(u8, u8, u8), +} + +#[derive(AutoDefault)] +pub struct PageTopLogo { + logo: PageTopLogoStyle, +} + +impl ComponentTrait for PageTopLogo { + fn new() -> Self { + PageTopLogo::default() + } + + fn prepare_component(&self, _cx: &mut Context) -> PrepareMarkup { + match self.logo() { + PageTopLogoStyle::Color => self.logo_color(), + PageTopLogoStyle::LineDark => self.logo_line(10, 11, 9), + PageTopLogoStyle::LineLight => self.logo_line(255, 255, 255), + PageTopLogoStyle::LineRGB(r, g, b) => self.logo_line(*r, *g, *b), + } + } +} + +impl PageTopLogo { + pub fn with(logo: PageTopLogoStyle) -> Self { + PageTopLogo::default().with_logo(logo) + } + + // PageTopLogo BUILDER. + + #[fn_builder] + pub fn with_logo(mut self, logo: PageTopLogoStyle) -> Self { + self.logo = logo; + self + } + + // PageTopLogo GETTERS. + + pub fn logo(&self) -> &PageTopLogoStyle { + &self.logo + } + + // PageTopLogo HELPERS. + + fn logo_color(&self) -> PrepareMarkup { + self.prepare_logo(html!{ + path fill="rgb(255,184,75)" d="M 633,61 L 633,61 C 579,61 527,75 480,102 433,129 395,167 368,214 341,261 327,313 327,367 L 327,1244 327,1245 C 327,1299 341,1351 368,1398 395,1445 433,1483 480,1510 527,1537 579,1551 633,1551 L 982,1550 982,1551 C 1036,1551 1088,1537 1135,1510 1182,1483 1220,1445 1247,1398 1274,1351 1288,1299 1288,1245 L 1288,367 1288,367 1288,367 C 1288,313 1274,261 1247,214 1220,167 1182,129 1135,102 1088,75 1036,61 982,61 L 633,61 Z" {} + path fill="rgb(158,96,0)" d="M 1389,573 L 1328,573 1328,460 1449,460 1449,573 1389,573 Z M 1491,627 L 1430,627 1430,404 1551,404 1551,627 1491,627 Z M 222,573 L 161,573 161,460 282,460 282,573 222,573 Z M 120,627 L 59,627 59,404 180,404 180,627 120,627 Z" {} + path fill="rgb(150,0,184)" d="M 678,1040 L 678,1040 C 645,1040 612,1049 583,1065 554,1082 530,1106 513,1135 497,1164 488,1197 488,1230 L 488,1230 488,1230 C 488,1263 497,1296 513,1325 530,1354 554,1378 583,1395 612,1411 645,1420 678,1420 L 940,1420 940,1420 C 973,1420 1006,1411 1035,1395 1064,1378 1088,1354 1105,1325 1121,1296 1130,1263 1130,1230 L 1130,1230 1130,1230 1130,1230 C 1130,1197 1121,1164 1105,1135 1088,1106 1064,1082 1035,1065 1006,1049 973,1040 940,1040 L 678,1040 Z M 488,1040 L 488,1040 488,1040 488,1040 488,1040 488,1040 488,1238 488,1238 488,1238 488,1238 488,1238 1130,1238 1130,1238 1130,1238 1130,1238 1130,1238 1130,1238 1130,1040 1130,1040 1130,1040 1130,1040 1130,1040 488,1040 Z" {} + path fill="rgb(255,255,255)" d="M 518,1128 L 488,1128 488,1066 547,1066 547,1128 518,1128 Z M 966,1128 L 908,1128 908,1066 1024,1066 1024,1128 966,1128 Z" {} + path fill="rgb(221,255,149)" d="M 898,71 C 940,48 987,36 1035,36 1086,36 1137,50 1181,77 1226,104 1263,142 1289,189 1314,236 1328,288 1328,342 1328,396 1314,448 1289,495 1281,509 1272,522 1262,535 L 898,71 Z M 1337,429 C 1307,460 1272,480 1233,488 1192,496 1148,490 1107,470 1066,451 1029,418 999,375 969,332 948,281 938,227 927,173 928,117 940,66 943,51 948,36 953,22 L 1337,429 Z" {} + path fill="rgb(146,128,99)" d="M 703,99 C 717,121 722,149 719,178 715,208 702,238 682,267 661,295 634,320 602,340 571,360 536,373 501,379 467,385 434,383 405,373 377,363 355,346 341,323 327,301 322,273 325,244 329,214 342,184 362,155 383,127 410,102 442,82 473,62 508,49 543,43 577,37 610,39 639,49 667,59 689,76 703,99 L 703,99 Z" {} + path fill="rgb(146,128,99)" d="M 672,550 C 683,568 685,590 678,615 671,640 655,668 632,694 609,720 580,745 547,765 514,785 479,801 446,810 412,819 381,821 355,816 329,811 310,799 299,782 288,765 286,742 293,717 301,692 316,665 339,638 362,612 391,588 424,567 457,547 492,531 526,523 559,514 591,511 616,516 642,521 661,533 672,550 L 672,550 Z" {} + path fill="rgb(146,128,99)" d="M 455,160 L 456,160 C 430,160 404,167 381,180 359,193 340,212 327,234 314,257 307,283 307,309 L 307,580 307,580 C 307,606 314,632 327,655 340,677 359,696 381,709 404,722 430,729 456,729 L 529,729 529,729 C 555,729 581,722 604,709 626,696 645,677 658,655 671,632 678,606 678,580 L 677,308 678,309 678,309 C 678,283 671,257 658,234 645,212 626,193 604,180 581,167 555,160 529,160 L 455,160 Z" {} + path fill="rgb(240,0,0)" d="M 698,1332 L 699,1332 C 696,1332 694,1333 691,1334 689,1335 687,1337 686,1339 685,1342 684,1344 684,1347 L 684,1405 684,1405 C 684,1408 685,1410 686,1413 687,1415 689,1417 691,1418 694,1419 696,1420 699,1420 L 914,1419 914,1420 C 917,1420 919,1419 922,1418 924,1417 926,1415 927,1413 928,1410 929,1408 929,1405 L 929,1346 929,1347 929,1347 C 929,1344 928,1342 927,1339 926,1337 924,1335 922,1334 919,1333 917,1332 914,1332 L 698,1332 Z M 643,780 C 643,797 638,814 630,830 621,845 608,858 593,867 577,875 560,880 543,880 525,880 508,875 492,867 477,858 464,845 455,830 447,814 442,797 442,780 442,762 447,745 455,729 464,714 477,701 492,692 508,684 525,679 542,679 560,679 577,684 593,692 608,701 621,714 630,729 638,745 643,762 643,779 L 643,780 Z M 1171,780 C 1171,797 1166,814 1158,830 1149,845 1136,858 1121,867 1105,875 1088,880 1071,880 1053,880 1036,875 1020,867 1005,858 992,845 983,830 975,814 970,797 970,780 970,762 975,745 983,729 992,714 1005,701 1020,692 1036,684 1053,679 1071,679 1088,679 1105,684 1121,692 1136,701 1149,714 1158,729 1166,745 1171,762 1171,779 L 1171,780 Z" {} + path fill="rgb(10,11,9)" d="M 1573,357 L 1415,357 C 1400,357 1388,369 1388,383 L 1388,410 1335,410 1335,357 C 1335,167 1181,13 992,13 L 621,13 C 432,13 278,167 278,357 L 278,410 225,410 225,383 C 225,369 213,357 198,357 L 40,357 C 25,357 13,369 13,383 L 13,648 C 13,662 25,674 40,674 L 198,674 C 213,674 225,662 225,648 L 225,621 278,621 278,1256 C 278,1446 432,1600 621,1600 L 992,1600 C 1181,1600 1335,1446 1335,1256 L 1335,621 1388,621 1388,648 C 1388,662 1400,674 1415,674 L 1573,674 C 1588,674 1600,662 1600,648 L 1600,383 C 1600,369 1588,357 1573,357 L 1573,357 1573,357 Z M 66,410 L 172,410 172,621 66,621 66,410 66,410 Z M 1282,357 L 1282,488 C 1247,485 1213,477 1181,464 L 1196,437 C 1203,425 1199,409 1186,401 1174,394 1158,398 1150,411 L 1133,440 C 1105,423 1079,401 1056,376 L 1075,361 C 1087,352 1089,335 1079,324 1070,313 1054,311 1042,320 L 1023,335 C 1000,301 981,263 967,221 L 1011,196 C 1023,189 1028,172 1021,160 1013,147 997,143 984,150 L 953,168 C 945,136 941,102 940,66 L 992,66 C 1152,66 1282,197 1282,357 L 1282,357 1282,357 Z M 621,66 L 674,66 674,225 648,225 C 633,225 621,237 621,251 621,266 633,278 648,278 L 674,278 674,357 648,357 C 633,357 621,369 621,383 621,398 633,410 648,410 L 674,410 674,489 648,489 C 633,489 621,501 621,516 621,530 633,542 648,542 L 664,542 C 651,582 626,623 600,662 583,653 563,648 542,648 469,648 410,707 410,780 410,787 411,794 412,801 388,805 361,806 331,806 L 331,357 C 331,197 461,66 621,66 L 621,66 621,66 Z M 621,780 C 621,824 586,859 542,859 498,859 463,824 463,780 463,736 498,701 542,701 586,701 621,736 621,780 L 621,780 621,780 Z M 225,463 L 278,463 278,569 225,569 225,463 225,463 Z M 992,1547 L 621,1547 C 461,1547 331,1416 331,1256 L 331,859 C 367,859 400,858 431,851 454,888 495,912 542,912 615,912 674,853 674,780 674,747 662,718 642,695 675,645 706,594 720,542 L 780,542 C 795,542 807,530 807,516 807,501 795,489 780,489 L 727,489 727,410 780,410 C 795,410 807,398 807,383 807,369 795,357 780,357 L 727,357 727,278 780,278 C 795,278 807,266 807,251 807,237 795,225 780,225 L 727,225 727,66 887,66 C 889,111 895,155 905,196 L 869,217 C 856,224 852,240 859,253 864,261 873,266 882,266 887,266 891,265 895,263 L 921,248 C 937,291 958,331 983,367 L 938,403 C 926,412 925,429 934,440 939,447 947,450 954,450 960,450 966,448 971,444 L 1016,408 C 1043,438 1074,465 1108,485 L 1084,527 C 1076,539 1081,555 1093,563 1098,565 1102,566 1107,566 1116,566 1125,561 1129,553 L 1155,509 C 1194,527 1237,538 1282,541 L 1282,1256 C 1282,1416 1152,1547 992,1547 L 992,1547 992,1547 Z M 1335,463 L 1388,463 1388,569 1335,569 1335,463 1335,463 Z M 1441,410 L 1547,410 1547,621 1441,621 1441,410 1441,410 Z" {} + path fill="rgb(10,11,9)" d="M 1150,1018 L 463,1018 C 448,1018 436,1030 436,1044 L 436,1177 C 436,1348 545,1468 701,1468 L 912,1468 C 1068,1468 1177,1348 1177,1177 L 1177,1044 C 1177,1030 1165,1018 1150,1018 L 1150,1018 1150,1018 Z M 912,1071 L 1018,1071 1018,1124 912,1124 912,1071 912,1071 Z M 489,1071 L 542,1071 542,1124 489,1124 489,1071 489,1071 Z M 701,1415 L 700,1415 C 701,1385 704,1352 718,1343 731,1335 759,1341 795,1359 802,1363 811,1363 818,1359 854,1341 882,1335 895,1343 909,1352 912,1385 913,1415 L 912,1415 701,1415 701,1415 701,1415 Z M 1124,1177 C 1124,1296 1061,1384 966,1408 964,1365 958,1320 922,1298 894,1281 856,1283 807,1306 757,1283 719,1281 691,1298 655,1320 649,1365 647,1408 552,1384 489,1296 489,1177 L 569,1177 C 583,1177 595,1165 595,1150 L 595,1071 859,1071 859,1150 C 859,1165 871,1177 886,1177 L 1044,1177 C 1059,1177 1071,1165 1071,1150 L 1071,1071 1124,1071 1124,1177 1124,1177 1124,1177 Z" {} + path fill="rgb(10,11,9)" d="M 1071,648 C 998,648 939,707 939,780 939,853 998,912 1071,912 1144,912 1203,853 1203,780 1203,707 1144,648 1071,648 L 1071,648 1071,648 Z M 1071,859 C 1027,859 992,824 992,780 992,736 1027,701 1071,701 1115,701 1150,736 1150,780 1150,824 1115,859 1071,859 L 1071,859 1071,859 Z" {} + }) + } + + fn logo_line(&self, r: u8, g: u8, b: u8) -> PrepareMarkup { + let logo_rgb = format!("rgb({r},{g},{b})"); + self.prepare_logo(html! { + path fill=(logo_rgb) d="M 1573,357 L 1415,357 C 1400,357 1388,369 1388,383 L 1388,410 1335,410 1335,357 C 1335,167 1181,13 992,13 L 621,13 C 432,13 278,167 278,357 L 278,410 225,410 225,383 C 225,369 213,357 198,357 L 40,357 C 25,357 13,369 13,383 L 13,648 C 13,662 25,674 40,674 L 198,674 C 213,674 225,662 225,648 L 225,621 278,621 278,1256 C 278,1446 432,1600 621,1600 L 992,1600 C 1181,1600 1335,1446 1335,1256 L 1335,621 1388,621 1388,648 C 1388,662 1400,674 1415,674 L 1573,674 C 1588,674 1600,662 1600,648 L 1600,383 C 1600,369 1588,357 1573,357 L 1573,357 1573,357 Z M 66,410 L 172,410 172,621 66,621 66,410 66,410 Z M 1282,357 L 1282,488 C 1247,485 1213,477 1181,464 L 1196,437 C 1203,425 1199,409 1186,401 1174,394 1158,398 1150,411 L 1133,440 C 1105,423 1079,401 1056,376 L 1075,361 C 1087,352 1089,335 1079,324 1070,313 1054,311 1042,320 L 1023,335 C 1000,301 981,263 967,221 L 1011,196 C 1023,189 1028,172 1021,160 1013,147 997,143 984,150 L 953,168 C 945,136 941,102 940,66 L 992,66 C 1152,66 1282,197 1282,357 L 1282,357 1282,357 Z M 621,66 L 674,66 674,225 648,225 C 633,225 621,237 621,251 621,266 633,278 648,278 L 674,278 674,357 648,357 C 633,357 621,369 621,383 621,398 633,410 648,410 L 674,410 674,489 648,489 C 633,489 621,501 621,516 621,530 633,542 648,542 L 664,542 C 651,582 626,623 600,662 583,653 563,648 542,648 469,648 410,707 410,780 410,787 411,794 412,801 388,805 361,806 331,806 L 331,357 C 331,197 461,66 621,66 L 621,66 621,66 Z M 621,780 C 621,824 586,859 542,859 498,859 463,824 463,780 463,736 498,701 542,701 586,701 621,736 621,780 L 621,780 621,780 Z M 225,463 L 278,463 278,569 225,569 225,463 225,463 Z M 992,1547 L 621,1547 C 461,1547 331,1416 331,1256 L 331,859 C 367,859 400,858 431,851 454,888 495,912 542,912 615,912 674,853 674,780 674,747 662,718 642,695 675,645 706,594 720,542 L 780,542 C 795,542 807,530 807,516 807,501 795,489 780,489 L 727,489 727,410 780,410 C 795,410 807,398 807,383 807,369 795,357 780,357 L 727,357 727,278 780,278 C 795,278 807,266 807,251 807,237 795,225 780,225 L 727,225 727,66 887,66 C 889,111 895,155 905,196 L 869,217 C 856,224 852,240 859,253 864,261 873,266 882,266 887,266 891,265 895,263 L 921,248 C 937,291 958,331 983,367 L 938,403 C 926,412 925,429 934,440 939,447 947,450 954,450 960,450 966,448 971,444 L 1016,408 C 1043,438 1074,465 1108,485 L 1084,527 C 1076,539 1081,555 1093,563 1098,565 1102,566 1107,566 1116,566 1125,561 1129,553 L 1155,509 C 1194,527 1237,538 1282,541 L 1282,1256 C 1282,1416 1152,1547 992,1547 L 992,1547 992,1547 Z M 1335,463 L 1388,463 1388,569 1335,569 1335,463 1335,463 Z M 1441,410 L 1547,410 1547,621 1441,621 1441,410 1441,410 Z" {} + path fill=(logo_rgb) d="M 1150,1018 L 463,1018 C 448,1018 436,1030 436,1044 L 436,1177 C 436,1348 545,1468 701,1468 L 912,1468 C 1068,1468 1177,1348 1177,1177 L 1177,1044 C 1177,1030 1165,1018 1150,1018 L 1150,1018 1150,1018 Z M 912,1071 L 1018,1071 1018,1124 912,1124 912,1071 912,1071 Z M 489,1071 L 542,1071 542,1124 489,1124 489,1071 489,1071 Z M 701,1415 L 700,1415 C 701,1385 704,1352 718,1343 731,1335 759,1341 795,1359 802,1363 811,1363 818,1359 854,1341 882,1335 895,1343 909,1352 912,1385 913,1415 L 912,1415 701,1415 701,1415 701,1415 Z M 1124,1177 C 1124,1296 1061,1384 966,1408 964,1365 958,1320 922,1298 894,1281 856,1283 807,1306 757,1283 719,1281 691,1298 655,1320 649,1365 647,1408 552,1384 489,1296 489,1177 L 569,1177 C 583,1177 595,1165 595,1150 L 595,1071 859,1071 859,1150 C 859,1165 871,1177 886,1177 L 1044,1177 C 1059,1177 1071,1165 1071,1150 L 1071,1071 1124,1071 1124,1177 1124,1177 1124,1177 Z" {} + path fill=(logo_rgb) d="M 1071,648 C 998,648 939,707 939,780 939,853 998,912 1071,912 1144,912 1203,853 1203,780 1203,707 1144,648 1071,648 L 1071,648 1071,648 Z M 1071,859 C 1027,859 992,824 992,780 992,736 1027,701 1071,701 1115,701 1150,736 1150,780 1150,824 1115,859 1071,859 L 1071,859 1071,859 Z" {} + }) + } + + fn prepare_logo(&self, content: Markup) -> PrepareMarkup { + PrepareMarkup::With(html! { + svg viewBox="0 0 1614 1614" xmlns="http://www.w3.org/2000/svg" role="img" { + (content) + } + }) + } +} diff --git a/pagetop/src/base/package.rs b/pagetop/src/base/extension.rs similarity index 100% rename from pagetop/src/base/package.rs rename to pagetop/src/base/extension.rs diff --git a/pagetop/src/base/package/welcome.rs b/pagetop/src/base/extension/welcome.rs similarity index 97% rename from pagetop/src/base/package/welcome.rs rename to pagetop/src/base/extension/welcome.rs index ed792dcf..43c57ae2 100644 --- a/pagetop/src/base/package/welcome.rs +++ b/pagetop/src/base/extension/welcome.rs @@ -2,13 +2,13 @@ use crate::prelude::*; pub struct Welcome; -impl PackageTrait for Welcome { +impl ExtensionTrait for Welcome { fn name(&self) -> L10n { - L10n::l("welcome_package_name") + L10n::l("welcome_extension_name") } fn description(&self) -> L10n { - L10n::l("welcome_package_description") + L10n::l("welcome_extension_description") } fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { diff --git a/pagetop/src/base/theme/basic.rs b/pagetop/src/base/theme/basic.rs index c07ffc56..2abb0a3a 100644 --- a/pagetop/src/base/theme/basic.rs +++ b/pagetop/src/base/theme/basic.rs @@ -2,7 +2,7 @@ use crate::prelude::*; pub struct Basic; -impl PackageTrait for Basic { +impl ExtensionTrait for Basic { fn theme(&self) -> Option { Some(&Basic) } diff --git a/pagetop/src/config.rs b/pagetop/src/config.rs index 7131d158..a04638ca 100644 --- a/pagetop/src/config.rs +++ b/pagetop/src/config.rs @@ -111,7 +111,7 @@ //! println!("Value of PAGETOP_RUN_MODE: {}", &global::SETTINGS.app.run_mode); //! } //! -//! fn package_settings() { +//! fn extension_settings() { //! println!("{} - {:?}", &config::SETTINGS.myapp.name, &config::SETTINGS.myapp.description); //! println!("{}", &config::SETTINGS.myapp.width); //! } diff --git a/pagetop/src/core.rs b/pagetop/src/core.rs index ae9ab1c7..3ffcf7ed 100644 --- a/pagetop/src/core.rs +++ b/pagetop/src/core.rs @@ -1,4 +1,4 @@ -//! Tipos y funciones esenciales para crear acciones, componentes, paquetes y temas. +//! Tipos y funciones esenciales para crear acciones, componentes, extensiones y temas. use crate::util::TypeInfo; @@ -80,8 +80,8 @@ pub mod action; // API to build new components. pub mod component; -// API to add new features with packages. -pub mod package; +// API to add new features with extensions. +pub mod extension; // API to add new themes. pub mod theme; diff --git a/pagetop/src/core/component/definition.rs b/pagetop/src/core/component/definition.rs index 268b5634..03fbfe26 100644 --- a/pagetop/src/core/component/definition.rs +++ b/pagetop/src/core/component/definition.rs @@ -43,7 +43,7 @@ impl ComponentBase for C { // Acciones específicas del tema antes de renderizar el componente. action::theme::BeforeRender::dispatch(self, cx); - // Acciones de los paquetes antes de renderizar el componente. + // Acciones de las extensiones antes de renderizar el componente. action::component::BeforeRender::dispatch(self, cx); // Renderiza el componente. @@ -55,7 +55,7 @@ impl ComponentBase for C { // Acciones específicas del tema después de renderizar el componente. action::theme::AfterRender::dispatch(self, cx); - // Acciones de los paquetes después de renderizar el componente. + // Acciones de las extensiones después de renderizar el componente. action::component::AfterRender::dispatch(self, cx); markup diff --git a/pagetop/src/core/extension.rs b/pagetop/src/core/extension.rs new file mode 100644 index 00000000..43710a27 --- /dev/null +++ b/pagetop/src/core/extension.rs @@ -0,0 +1,4 @@ +mod definition; +pub use definition::{ExtensionRef, ExtensionTrait}; + +pub(crate) mod all; diff --git a/pagetop/src/core/extension/all.rs b/pagetop/src/core/extension/all.rs new file mode 100644 index 00000000..dd0c2731 --- /dev/null +++ b/pagetop/src/core/extension/all.rs @@ -0,0 +1,140 @@ +use crate::core::action::add_action; +use crate::core::extension::ExtensionRef; +use crate::core::theme::all::THEMES; +use crate::{global, include_files, include_files_service, service, trace}; + +use std::sync::{LazyLock, RwLock}; + +// EXTENSIONS ************************************************************************************** + +static ENABLED_EXTENSIONS: LazyLock>> = + LazyLock::new(|| RwLock::new(Vec::new())); + +static DROPPED_EXTENSIONS: LazyLock>> = + LazyLock::new(|| RwLock::new(Vec::new())); + +// REGISTER EXTENSIONS ***************************************************************************** + +pub fn register_extensions(root_extension: Option) { + // Initialize a list for extensions to be enabled. + let mut enabled_list: Vec = Vec::new(); + + // Add default theme to the enabled list. + add_to_enabled(&mut enabled_list, &crate::base::theme::Basic); + + // If a root extension is provided, add it to the enabled list. + if let Some(extension) = root_extension { + add_to_enabled(&mut enabled_list, extension); + } + + // Add default welcome page extension to the enabled list. + add_to_enabled(&mut enabled_list, &crate::base::extension::Welcome); + + // Save the final list of enabled extensions. + ENABLED_EXTENSIONS + .write() + .unwrap() + .append(&mut enabled_list); + + // Initialize a list for extensions to be dropped. + let mut dropped_list: Vec = Vec::new(); + // If a root extension is provided, analyze its dropped list. + if let Some(extension) = root_extension { + add_to_dropped(&mut dropped_list, extension); + } + // Save the final list of dropped extensions. + DROPPED_EXTENSIONS + .write() + .unwrap() + .append(&mut dropped_list); +} + +fn add_to_enabled(list: &mut Vec, extension: ExtensionRef) { + // Check if the extension is not already in the enabled list to avoid duplicates. + if !list.iter().any(|p| p.type_id() == extension.type_id()) { + // Add the extension dependencies in reverse order first. + for d in extension.dependencies().iter().rev() { + add_to_enabled(list, *d); + } + + // Add the extension itself to the enabled list. + list.push(extension); + + // Check if the extension has an associated theme to register. + if let Some(theme) = extension.theme() { + let mut registered_themes = THEMES.write().unwrap(); + // Ensure the theme is not already registered to avoid duplicates. + if !registered_themes + .iter() + .any(|t| t.type_id() == theme.type_id()) + { + registered_themes.push(theme); + trace::debug!("Enabling \"{}\" theme", theme.short_name()); + } + } else { + trace::debug!("Enabling \"{}\" extension", extension.short_name()); + } + } +} + +fn add_to_dropped(list: &mut Vec, extension: ExtensionRef) { + // Iterate through extensions recommended to be dropped. + for d in &extension.drop_extensions() { + // Check if the extension is not already in the dropped list. + if !list.iter().any(|p| p.type_id() == d.type_id()) { + // Check if the extension is currently enabled. If so, log a warning. + if ENABLED_EXTENSIONS + .read() + .unwrap() + .iter() + .any(|p| p.type_id() == extension.type_id()) + { + trace::warn!( + "Trying to drop \"{}\" extension which is enabled", + extension.short_name() + ); + } else { + // If the extension is not enabled, add it to the dropped list and log the action. + list.push(*d); + trace::debug!("Extension \"{}\" dropped", d.short_name()); + // Recursively add the dependencies of the dropped extension to the dropped list. + // This ensures that all dependencies are also considered for dropping. + for dependency in &extension.dependencies() { + add_to_dropped(list, *dependency); + } + } + } + } +} + +// REGISTER ACTIONS ******************************************************************************** + +pub fn register_actions() { + for m in ENABLED_EXTENSIONS.read().unwrap().iter() { + for a in m.actions().into_iter() { + add_action(a); + } + } +} + +// INIT EXTENSIONS ********************************************************************************* + +pub fn init_extensions() { + trace::info!("Calling application bootstrap"); + for m in ENABLED_EXTENSIONS.read().unwrap().iter() { + m.init(); + } +} + +// CONFIGURE SERVICES ****************************************************************************** + +include_files!(assets); + +pub fn configure_services(scfg: &mut service::web::ServiceConfig) { + for m in ENABLED_EXTENSIONS.read().unwrap().iter() { + m.configure_service(scfg); + } + include_files_service!( + scfg, assets => "/", [&global::SETTINGS.dev.pagetop_project_dir, "static"] + ); +} diff --git a/pagetop/src/core/package/definition.rs b/pagetop/src/core/extension/definition.rs similarity index 69% rename from pagetop/src/core/package/definition.rs rename to pagetop/src/core/extension/definition.rs index b1d0a8c9..11a0a5cb 100644 --- a/pagetop/src/core/package/definition.rs +++ b/pagetop/src/core/extension/definition.rs @@ -4,10 +4,10 @@ use crate::core::AnyBase; use crate::locale::L10n; use crate::{actions, service}; -pub type PackageRef = &'static dyn PackageTrait; +pub type ExtensionRef = &'static dyn ExtensionTrait; -/// Los paquetes deben implementar este *trait*. -pub trait PackageTrait: AnyBase + Send + Sync { +/// Las extensiones deben implementar este *trait*. +pub trait ExtensionTrait: AnyBase + Send + Sync { fn name(&self) -> L10n { L10n::n(self.short_name()) } @@ -20,11 +20,11 @@ pub trait PackageTrait: AnyBase + Send + Sync { None } - fn dependencies(&self) -> Vec { + fn dependencies(&self) -> Vec { vec![] } - fn drop_packages(&self) -> Vec { + fn drop_extensions(&self) -> Vec { vec![] } diff --git a/pagetop/src/core/package.rs b/pagetop/src/core/package.rs deleted file mode 100644 index e0c6a12e..00000000 --- a/pagetop/src/core/package.rs +++ /dev/null @@ -1,4 +0,0 @@ -mod definition; -pub use definition::{PackageRef, PackageTrait}; - -pub(crate) mod all; diff --git a/pagetop/src/core/package/all.rs b/pagetop/src/core/package/all.rs deleted file mode 100644 index 301d3a02..00000000 --- a/pagetop/src/core/package/all.rs +++ /dev/null @@ -1,134 +0,0 @@ -use crate::core::action::add_action; -use crate::core::package::PackageRef; -use crate::core::theme::all::THEMES; -use crate::{global, include_files, include_files_service, service, trace}; - -use std::sync::{LazyLock, RwLock}; - -// PACKAGES **************************************************************************************** - -static ENABLED_PACKAGES: LazyLock>> = - LazyLock::new(|| RwLock::new(Vec::new())); - -static DROPPED_PACKAGES: LazyLock>> = - LazyLock::new(|| RwLock::new(Vec::new())); - -// REGISTER PACKAGES ******************************************************************************* - -pub fn register_packages(root_package: Option) { - // Initialize a list for packages to be enabled. - let mut enabled_list: Vec = Vec::new(); - - // Add default theme to the enabled list. - add_to_enabled(&mut enabled_list, &crate::base::theme::Basic); - - // If a root package is provided, add it to the enabled list. - if let Some(package) = root_package { - add_to_enabled(&mut enabled_list, package); - } - - // Add default welcome page package to the enabled list. - add_to_enabled(&mut enabled_list, &crate::base::package::Welcome); - - // Save the final list of enabled packages. - ENABLED_PACKAGES.write().unwrap().append(&mut enabled_list); - - // Initialize a list for packages to be dropped. - let mut dropped_list: Vec = Vec::new(); - // If a root package is provided, analyze its dropped list. - if let Some(package) = root_package { - add_to_dropped(&mut dropped_list, package); - } - // Save the final list of dropped packages. - DROPPED_PACKAGES.write().unwrap().append(&mut dropped_list); -} - -fn add_to_enabled(list: &mut Vec, package: PackageRef) { - // Check if the package is not already in the enabled list to avoid duplicates. - if !list.iter().any(|p| p.type_id() == package.type_id()) { - // Add the package dependencies in reverse order first. - for d in package.dependencies().iter().rev() { - add_to_enabled(list, *d); - } - - // Add the package itself to the enabled list. - list.push(package); - - // Check if the package has an associated theme to register. - if let Some(theme) = package.theme() { - let mut registered_themes = THEMES.write().unwrap(); - // Ensure the theme is not already registered to avoid duplicates. - if !registered_themes - .iter() - .any(|t| t.type_id() == theme.type_id()) - { - registered_themes.push(theme); - trace::debug!("Enabling \"{}\" theme", theme.short_name()); - } - } else { - trace::debug!("Enabling \"{}\" package", package.short_name()); - } - } -} - -fn add_to_dropped(list: &mut Vec, package: PackageRef) { - // Iterate through packages recommended to be dropped. - for d in &package.drop_packages() { - // Check if the package is not already in the dropped list. - if !list.iter().any(|p| p.type_id() == d.type_id()) { - // Check if the package is currently enabled. If so, log a warning. - if ENABLED_PACKAGES - .read() - .unwrap() - .iter() - .any(|p| p.type_id() == package.type_id()) - { - trace::warn!( - "Trying to drop \"{}\" package which is enabled", - package.short_name() - ); - } else { - // If the package is not enabled, add it to the dropped list and log the action. - list.push(*d); - trace::debug!("Package \"{}\" dropped", d.short_name()); - // Recursively add the dependencies of the dropped package to the dropped list. - // This ensures that all dependencies are also considered for dropping. - for dependency in &package.dependencies() { - add_to_dropped(list, *dependency); - } - } - } - } -} - -// REGISTER ACTIONS ******************************************************************************** - -pub fn register_actions() { - for m in ENABLED_PACKAGES.read().unwrap().iter() { - for a in m.actions().into_iter() { - add_action(a); - } - } -} - -// INIT PACKAGES *********************************************************************************** - -pub fn init_packages() { - trace::info!("Calling application bootstrap"); - for m in ENABLED_PACKAGES.read().unwrap().iter() { - m.init(); - } -} - -// CONFIGURE SERVICES ****************************************************************************** - -include_files!(assets); - -pub fn configure_services(scfg: &mut service::web::ServiceConfig) { - for m in ENABLED_PACKAGES.read().unwrap().iter() { - m.configure_service(scfg); - } - include_files_service!( - scfg, assets => "/", [&global::SETTINGS.dev.pagetop_project_dir, "static"] - ); -} diff --git a/pagetop/src/core/theme/definition.rs b/pagetop/src/core/theme/definition.rs index 43688b2f..253996a1 100644 --- a/pagetop/src/core/theme/definition.rs +++ b/pagetop/src/core/theme/definition.rs @@ -1,6 +1,6 @@ use crate::base::component::Region; use crate::core::component::ComponentBase; -use crate::core::package::PackageTrait; +use crate::core::extension::ExtensionTrait; use crate::global; use crate::html::{html, Markup}; use crate::locale::L10n; @@ -9,7 +9,7 @@ use crate::response::page::Page; pub type ThemeRef = &'static dyn ThemeTrait; /// Los temas deben implementar este "trait". -pub trait ThemeTrait: PackageTrait + Send + Sync { +pub trait ThemeTrait: ExtensionTrait + Send + Sync { fn regions(&self) -> Vec<(&'static str, L10n)> { vec![("region-content", L10n::l("content"))] } diff --git a/pagetop/src/lib.rs b/pagetop/src/lib.rs index 001d3961..97cdd676 100644 --- a/pagetop/src/lib.rs +++ b/pagetop/src/lib.rs @@ -23,8 +23,8 @@ //! flujo de ejecución. //! * **Componentes** (*components*): encapsulan HTML, CSS y JavaScript en unidades funcionales, //! configurables y reutilizables. -//! * **Paquetes** (*packages*): añaden, extienden o personalizan funcionalidades usando las APIs -//! de `PageTop` o de terceros. +//! * **Extensiones** (*extensions*): añaden, extienden o personalizan funcionalidades usando las +//! APIs de `PageTop` o de terceros. //! * **Temas** (*themes*): permiten modificar la apariencia de páginas y componentes sin //! comprometer su funcionalidad. //! @@ -44,14 +44,14 @@ //! Por defecto, este código sirve una página web de bienvenida accesible desde un navegador en la //! dirección `http://localhost:8088`, siguiendo la configuración predeterminada. //! -//! Para personalizar el servicio, puedes crear un paquete de `PageTop` de la siguiente manera: +//! Para personalizar el servicio, puedes crear una extensión de `PageTop` de la siguiente manera: //! //! ```rust#ignore //! use pagetop::prelude::*; //! //! struct HelloWorld; //! -//! impl PackageTrait for HelloWorld { +//! impl ExtensionTrait for HelloWorld { //! fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { //! scfg.route("/", service::web::get().to(hello_world)); //! } @@ -69,7 +69,7 @@ //! } //! ``` //! -//! Este programa implementa un paquete llamado `HelloWorld` que sirve una página web en la ruta +//! Este programa implementa una extensión llamada `HelloWorld` que sirve una página web en la ruta //! raíz (`/`) mostrando el texto "Hello world!" dentro de un elemento HTML `

`. //! //! # 🧩 Gestión de Dependencias @@ -77,8 +77,8 @@ //! Los proyectos que utilizan `PageTop` gestionan las dependencias con `cargo`, como cualquier otro //! proyecto en Rust. //! -//! Sin embargo, es fundamental que cada paquete declare explícitamente sus -//! [dependencias](core::package::PackageTrait#method.dependencies), si las tiene, para que +//! Sin embargo, es fundamental que cada extensión declare explícitamente sus +//! [dependencias](core::extension::ExtensionTrait#method.dependencies), si las tiene, para que //! `PageTop` pueda estructurar e inicializar la aplicación de forma modular. #![cfg_attr(docsrs, feature(doc_cfg))] @@ -112,11 +112,11 @@ pub mod locale; pub mod datetime; // Gestión del servidor y servicios web. pub mod service; -// Tipos y funciones esenciales para crear acciones, componentes, paquetes y temas. +// Tipos y funciones esenciales para crear acciones, componentes, extensiones y temas. pub mod core; // Respuestas a peticiones web en sus diferentes variantes. pub mod response; -// Acciones, componentes, paquetes y temas base. +// Acciones, componentes, extensiones y temas base. pub mod base; // Prepara y ejecuta la aplicación. pub mod app; diff --git a/pagetop/src/locale/en-US/welcome.ftl b/pagetop/src/locale/en-US/welcome.ftl index fe45c852..921f3610 100644 --- a/pagetop/src/locale/en-US/welcome.ftl +++ b/pagetop/src/locale/en-US/welcome.ftl @@ -1,5 +1,5 @@ -welcome_package_name = Default homepage -welcome_package_description = Displays a landing page when none is configured. +welcome_extension_name = Default homepage +welcome_extension_description = Displays a landing page when none is configured. welcome_title = Hello world! diff --git a/pagetop/src/locale/es-ES/welcome.ftl b/pagetop/src/locale/es-ES/welcome.ftl index 82dad6f0..b32c092e 100644 --- a/pagetop/src/locale/es-ES/welcome.ftl +++ b/pagetop/src/locale/es-ES/welcome.ftl @@ -1,5 +1,5 @@ -welcome_package_name = Página de inicio predeterminada -welcome_package_description = Muestra una página de inicio predeterminada cuando no hay ninguna configurada. +welcome_extension_name = Página de inicio predeterminada +welcome_extension_description = Muestra una página de inicio predeterminada cuando no hay ninguna configurada. welcome_title = ¡Hola mundo! diff --git a/pagetop/src/prelude.rs b/pagetop/src/prelude.rs index 190acced..7c1bfa7e 100644 --- a/pagetop/src/prelude.rs +++ b/pagetop/src/prelude.rs @@ -40,7 +40,7 @@ pub use crate::core::{AnyBase, AnyTo}; pub use crate::core::action::*; pub use crate::core::component::*; -pub use crate::core::package::*; +pub use crate::core::extension::*; pub use crate::core::theme::*; pub use crate::response::{json::*, page::*, redirect::*, ResponseError}; diff --git a/pagetop/src/response/page.rs b/pagetop/src/response/page.rs index 2e223bfe..5b4d6a80 100644 --- a/pagetop/src/response/page.rs +++ b/pagetop/src/response/page.rs @@ -153,7 +153,7 @@ impl Page { // Acciones específicas del tema antes de renderizar el . self.context.theme().before_render_page_body(self); - // Acciones de los paquetes antes de renderizar el . + // Acciones de las extensiones antes de renderizar el . action::page::BeforeRenderBody::dispatch(self); // Renderiza el . @@ -162,7 +162,7 @@ impl Page { // Acciones específicas del tema después de renderizar el . self.context.theme().after_render_page_body(self); - // Acciones de los paquetes después de renderizar el . + // Acciones de las extensiones después de renderizar el . action::page::AfterRenderBody::dispatch(self); // Renderiza el . diff --git a/pagetop/src/util.rs b/pagetop/src/util.rs index 241edec8..d6bdacf9 100644 --- a/pagetop/src/util.rs +++ b/pagetop/src/util.rs @@ -166,10 +166,10 @@ macro_rules! hm { }}; } -/// Concatena varios fragmentos de cadenas (*string slices*) en una cadena *String*. +/// Concatena varios fragmentos de cadenas (*string slices*) en una cadena `String`. /// /// Exporta la macro [`concat_string!`](https://docs.rs/concat-string), que permite concatenar de -/// forma eficiente fragmentos de cadenas en una cadena *String*. Acepta cualquier número de +/// forma eficiente fragmentos de cadenas en una cadena `String`. Acepta cualquier número de /// argumentos que implementen `AsRef` y crea una cadena `String` con el tamaño adecuado, sin /// requerir cadenas de formato que puedan sobrecargar el rendimiento. /// @@ -195,7 +195,7 @@ macro_rules! join_string { }; } -/// Concatena varios fragmentos de cadenas (*string slices*) en una cadena *String* utilizando +/// Concatena varios fragmentos de cadenas (*string slices*) en una cadena `String` utilizando /// opcionalmente un separador. /// /// Crea una cadena que contiene los fragmentos no vacíos concatenados. La macro puede utilizar un @@ -236,7 +236,49 @@ macro_rules! option_string { }}; } -/// Concatena dos fragmentos de cadenas (*string slices*) en una cadena *String* con un separador. +/// Concatena varios fragmentos de cadenas (*string slices*) en una cadena `String` únicamente si +/// ninguna es vacía. +/// +/// Si alguna de las cadenas es vacía, devuelve `None`. Si todas tienen contenido, devuelve una +/// cadena `String` que las concatena. También se puede especificar un separador para concatenar las +/// cadenas. +/// +/// # Ejemplo +/// +/// ```rust#ignore +/// // Concatena los fragmentos. +/// let result = strict_string!(["Hello", "World"]); +/// assert_eq!(result, Some("HelloWorld".to_string())); +/// +/// // Concatena los fragmentos con un separador. +/// let result_with_separator = strict_string!(["Hello", "World"]; " "); +/// assert_eq!(result_with_separator, Some("Hello World".to_string())); +/// +/// // Devuelve `None` si alguna de las cadenas es vacía. +/// let result_with_empty = strict_string!(["Hello", "", "World"]); +/// assert_eq!(result_with_empty, None); +/// ``` +#[macro_export] +macro_rules! strict_string { + ([$($arg:expr),* $(,)?]) => {{ + let fragments = [$($arg),*]; + if fragments.iter().any(|&item| item.is_empty()) { + None + } else { + Some(fragments.concat()) + } + }}; + ([$($arg:expr),* $(,)?]; $separator:expr) => {{ + let fragments = [$($arg),*]; + if fragments.iter().any(|&item| item.is_empty()) { + None + } else { + Some(fragments.join($separator)) + } + }}; +} + +/// Concatena dos fragmentos de cadenas (*string slices*) en una cadena `String` con un separador. /// /// Concatena los dos fragmentos que implementen `AsRef` usando el separador proporcionado, /// pero devuelve sólo el primer fragmento si el segundo está vacío, o sólo el segundo fragmento si diff --git a/pagetop/tests/server/health_check.rs b/pagetop/tests/server/health_check.rs index 41415c7a..bdeb6526 100644 --- a/pagetop/tests/server/health_check.rs +++ b/pagetop/tests/server/health_check.rs @@ -2,7 +2,7 @@ use pagetop::prelude::*; struct HealthCheck; -impl PackageTrait for HealthCheck {} +impl ExtensionTrait for HealthCheck {} #[pagetop::test] async fn health_check_works() { diff --git a/tools/publish.sh b/tools/publish.sh index f0e5d886..7255a02c 100755 --- a/tools/publish.sh +++ b/tools/publish.sh @@ -78,7 +78,7 @@ HELPERS=( pagetop-build pagetop-macros ) -PACKAGES=( +EXTENSIONS=( pagetop-seaorm pagetop-mdbook pagetop-hljs @@ -99,9 +99,9 @@ pushd pagetop > /dev/null 2>&1 CRATE=pagetop; publish_crate popd > /dev/null 2>&1 -# Publica los paquetes del proyecto -pushd packages > /dev/null 2>&1 -for CRATE in "${PACKAGES[@]}"; do +# Publica las extensiones del proyecto +pushd extensions > /dev/null 2>&1 +for CRATE in "${EXTENSIONS[@]}"; do pushd "$CRATE" > /dev/null 2>&1 publish_crate popd > /dev/null 2>&1 diff --git a/website/doc/v0.0/es/src/SUMMARY.md b/website/doc/v0.0/es/src/SUMMARY.md index 27eba797..1af4473d 100644 --- a/website/doc/v0.0/es/src/SUMMARY.md +++ b/website/doc/v0.0/es/src/SUMMARY.md @@ -7,11 +7,11 @@ - [Comenzando](getting-started.md) - [Prepara tu entorno](configuration.md) - [Aplicaciones](apps.md) - - [Paquetes](packages.md) + - [Extensiones](extensions.md) - [Componentes](components.md) - [Acciones](actions.md) - [Temas](themes.md) # Tutoriales -- [Cómo crear un paquete desde cero](tutorials/create-a-package-from-scratch.md) +- [Cómo crear una extensión desde cero](tutorials/create-a-extension-from-scratch.md) diff --git a/website/doc/v0.0/es/src/apps.md b/website/doc/v0.0/es/src/apps.md index 8f17a001..97e72837 100644 --- a/website/doc/v0.0/es/src/apps.md +++ b/website/doc/v0.0/es/src/apps.md @@ -30,10 +30,10 @@ Sin embargo, aún no hemos indicado a nuestra aplicación qué hacer. La [API de PageTop](https://docs.rs/pagetop) ofrece cuatro instrumentos esenciales para construir una aplicación: - - [**Paquetes**](packages.md), que añaden, amplían o personalizan funcionalidades interactuando con la API de PageTop o las APIs de paquetes de terceros. + - [**Extensiones**](extensions.md), que añaden, amplían o personalizan funcionalidades interactuando con la API de PageTop o las APIs de extensiones de terceros. - [**Componentes**](components.md), para encapsular HTML, CSS y JavaScript en unidades funcionales, configurables y bien definidas. - [**Acciones**](actions.md), alteran el comportamiento interno de otros elementos de PageTop interceptando su flujo de ejecución. - - [**Temas**](themes.md), son *paquetes* que permiten a los desarrolladores cambiar la apariencia de páginas y componentes sin afectar su funcionalidad. + - [**Temas**](themes.md), son *extensiones* que permiten a los desarrolladores cambiar la apariencia de páginas y componentes sin afectar su funcionalidad. Si quieres saber más sobre el funcionamiento interno de las aplicaciones, continúa leyendo. Si no, puedes saltar a la siguiente página y empezar a añadir lógica a nuestra primera aplicación. @@ -48,14 +48,14 @@ Como hemos visto arriba, primero se instancia la [Aplicación](https://docs.rs/p 3. Conecta con la base de datos. - 4. Registra los paquetes de la aplicación según sus dependencias internas. + 4. Registra las extensiones de la aplicación según sus dependencias internas. - 5. Registra las acciones de los paquetes. + 5. Registra las acciones de las extensiones. - 6. Inicializa los paquetes. + 6. Inicializa las extensiones. 7. Ejecuta las actualizaciones pendientes de la base de datos. Pero no ejecuta la aplicación. Para eso se usa el método [`run()`](https://docs.rs/pagetop/latest/pagetop/app/struct.Application.html#method.run), que arranca el servidor web para empezar a responder las peticiones desde cualquier navegador. -Hablaremos más de todos estos subsistemas en próximas páginas. Mientras tanto, ¡vamos a añadir algo de lógica a nuestra aplicación creando un paquete con un nuevo servicio web! +Hablaremos más de todos estos subsistemas en próximas páginas. Mientras tanto, ¡vamos a añadir algo de lógica a nuestra aplicación creando una extensión con un nuevo servicio web! diff --git a/website/doc/v0.0/es/src/configuration.md b/website/doc/v0.0/es/src/configuration.md index 220d3513..eab52ca0 100644 --- a/website/doc/v0.0/es/src/configuration.md +++ b/website/doc/v0.0/es/src/configuration.md @@ -8,7 +8,7 @@ PageTop depende en gran medida de las mejoras que se aplican en el lenguaje y el Puedes instalar Rust siguiendo la [Guía de Inicio Rápido de Rust](https://www.rust-lang.org/learn/get-started). -Una vez completada la instalación, tendrás disponibles en tu sistema el compilador `rustc` y `cargo` para la construcción y gestión de paquetes (*crates*) de Rust. +Una vez completada la instalación, tendrás disponibles en tu sistema el compilador `rustc` y `cargo` para la construcción y gestión de *crates* de Rust. ## Recursos para aprender Rust @@ -59,7 +59,7 @@ edition = "2021" ## Añade PageTop como dependencia -PageTop está disponible como [biblioteca en crates.io](https://crates.io/crates/pagetop), el repositorio oficial de paquetes (*crates*) Rust. +PageTop está disponible como [biblioteca en crates.io](https://crates.io/crates/pagetop), el repositorio oficial de *crates* Rust. La forma más fácil de incorporarlo en tu proyecto es usar `cargo add`: diff --git a/website/doc/v0.0/es/src/extensions.md b/website/doc/v0.0/es/src/extensions.md new file mode 100644 index 00000000..073e9d9a --- /dev/null +++ b/website/doc/v0.0/es/src/extensions.md @@ -0,0 +1 @@ +# Extensiones diff --git a/website/doc/v0.0/es/src/intro.md b/website/doc/v0.0/es/src/intro.md index 4129622d..6fb520aa 100644 --- a/website/doc/v0.0/es/src/intro.md +++ b/website/doc/v0.0/es/src/intro.md @@ -7,7 +7,7 @@ Si quieres aprender a construir soluciones web que rescaten la esencia de los or **PageTop** es un marco de desarrollo web que proporciona herramientas y patrones de diseño predefinidos para el desarrollo de soluciones web seguras, modulares y personalizables con *Renderizado desde el Servidor* ([SSR](#ssr)). -PageTop está desarrollado en el [lenguaje de programación Rust](https://www.rust-lang.org/) y se apoya sobre los hombros de auténticos gigantes, porque utiliza algunas de las librerías (*crates*) más estables y reconocidas del [ecosistema Rust](https://lib.rs) como: +PageTop está desarrollado en el [lenguaje de programación Rust](https://www.rust-lang.org/) y se apoya sobre los hombros de auténticos gigantes, porque utiliza algunas de las librerías más estables y reconocidas del [ecosistema Rust](https://lib.rs) como: - [Actix Web](https://github.com/actix/actix-web), para la gestión de los servicios y del servidor web. - [Tracing](https://github.com/tokio-rs/tracing), para el sistema de diagnóstico y mensajes de registro estructurados. @@ -28,7 +28,7 @@ PageTop usa SSR como una solución robusta para la creación de soluciones web c # Contribuciones -PageTop [empezó como un proyecto personal](https://manuel.cillero.es/blog/aprendiendo-rust-presentando-pagetop/) para aprender a programar con Rust. Es [libre y de código abierto](https://github.com/manuelcillero/pagetop#-license), para siempre. Y puedes contribuir aumentando su versatilidad, documentando, traduciendo o corrigiendo errores. Pero también puedes crear tus propios paquetes o temas que otros desarrolladores podrán utilizar en sus proyectos. +PageTop [empezó como un proyecto personal](https://manuel.cillero.es/blog/aprendiendo-rust-presentando-pagetop/) para aprender a programar con Rust. Es [libre y de código abierto](https://github.com/manuelcillero/pagetop#-license), para siempre. Y puedes contribuir aumentando su versatilidad, documentando, traduciendo o corrigiendo errores. Pero también puedes crear tus propias extensiones o temas que otros desarrolladores podrán utilizar en sus proyectos. # Advertencia diff --git a/website/doc/v0.0/es/src/packages.md b/website/doc/v0.0/es/src/packages.md index 6c2984f5..cb0e5ad0 100644 --- a/website/doc/v0.0/es/src/packages.md +++ b/website/doc/v0.0/es/src/packages.md @@ -1,21 +1,21 @@ -# Paquetes +# Extensiones -Una de las características más poderosas de PageTop es su extensibilidad mediante el uso de [Paquetes](https://docs.rs/pagetop/latest/pagetop/core/package/index.html). Los paquetes añaden, amplían o personalizan funcionalidades para nuestra aplicación. +Una de las características más poderosas de PageTop es su extensibilidad mediante el uso de [Extensiones](https://docs.rs/pagetop/latest/pagetop/core/extension/index.html). Las extensiones añaden, amplían o personalizan funcionalidades para nuestra aplicación. -Un paquete es una [estructura unitaria](https://stackoverflow.com/questions/67689613/what-is-a-real-world-example-of-using-a-unit-struct) (*unit struct*) que implementa el *trait* [`PackageTrait`](https://docs.rs/pagetop/latest/pagetop/core/package/trait.PackageTrait.html). Los métodos de [`PackageTrait`](https://docs.rs/pagetop/latest/pagetop/core/package/trait.PackageTrait.html) tienen un funcionamiento predefinido que se puede personalizar. +Una extensión es una [estructura unitaria](https://stackoverflow.com/questions/67689613/what-is-a-real-world-example-of-using-a-unit-struct) (*unit struct*) que implementa el *trait* [`ExtensionTrait`](https://docs.rs/pagetop/latest/pagetop/core/extension/trait.ExtensionTrait.html). Los métodos de [`ExtensionTrait`](https://docs.rs/pagetop/latest/pagetop/core/extension/trait.ExtensionTrait.html) tienen un funcionamiento predefinido que se puede personalizar. -Los paquetes tienen acceso a puntos de nuestra aplicación donde PageTop permite que el código de terceros haga ciertas cosas. +Las extensiones tienen acceso a puntos de nuestra aplicación donde PageTop permite que el código de terceros haga ciertas cosas. ## ¡Hola mundo! -Para añadir lógica a nuestra [aplicación](apps.html) puedes crear un paquete en tu archivo `main.rs` sustituyendo el código de ejemplo por este nuevo código: +Para añadir lógica a nuestra [aplicación](apps.html) puedes crear una extensión en tu archivo `main.rs` sustituyendo el código de ejemplo por este nuevo código: ```rust use pagetop::prelude::*; struct HelloWorld; -impl PackageTrait for HelloWorld { +impl ExtensionTrait for HelloWorld { fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { scfg.route("/", service::web::get().to(hello_world)); } @@ -33,7 +33,7 @@ async fn main() -> std::io::Result<()> { } ``` -La función `main()` instancia la aplicación usando el método `prepare()` con una referencia ([`PackageRef`](https://docs.rs/pagetop/latest/pagetop/core/package/type.PackageRef.html)) al paquete `HelloWorld`. Así se indica a PageTop que debe incluirlo en su registro interno de paquetes. +La función `main()` instancia la aplicación usando el método `prepare()` con una referencia ([`ExtensionRef`](https://docs.rs/pagetop/latest/pagetop/core/extension/type.ExtensionRef.html)) a la extensión `HelloWorld`. Así se indica a PageTop que debe incluirlo en su registro interno de extensiones. `HelloWorld` configura un servicio en la ruta de inicio ("/") que se implementa en `hello_world()`. Esta función devuelve una página web con un componente que directamente renderiza código HTML para mostrar un título con el texto *Hello World!*. @@ -41,16 +41,16 @@ Ahora si compilamos y ejecutamos nuestra aplicación con `cargo run` y en el nav ## Librerías -Los paquetes en PageTop son *crates* de biblioteca, usualmente publicados en [crates.io](https://crates.io/search?q=pagetop), que puedes usar como dependencias en tu aplicación. +Las extensiones en PageTop son *crates* de biblioteca, usualmente publicados en [crates.io](https://crates.io/search?q=pagetop), que puedes usar como dependencias en tu aplicación. # Seguridad -Los paquetes ajenos a PageTop contienen código desarrollado por terceros y, dado que pueden hacer básicamente lo que quieran, pueden representar un serio riesgo para la seguridad de tu sistema. Por ejemplo, un paquete podría indicar que está analizando la entrada del usuario y realmente está descargando ransomware en tu computadora. +Las extensiones ajenas a PageTop contienen código desarrollado por terceros y, dado que pueden hacer básicamente lo que quieran, pueden representar un serio riesgo para la seguridad de tu sistema. Por ejemplo, una extensión podría indicar que está analizando la entrada del usuario y realmente está descargando ransomware en tu computadora. -Cualquier sospecha sobre paquetes malintencionados debe ser reportado confidencialmente al administrador de PageTop para ser analizado por la comunidad. +Cualquier sospecha sobre extensiones malintencionadas debe ser reportada confidencialmente al administrador de PageTop para ser analizado por la comunidad. diff --git a/website/doc/v0.0/es/src/tutorials/create-a-extension-from-scratch.md b/website/doc/v0.0/es/src/tutorials/create-a-extension-from-scratch.md new file mode 100644 index 00000000..343d6c28 --- /dev/null +++ b/website/doc/v0.0/es/src/tutorials/create-a-extension-from-scratch.md @@ -0,0 +1 @@ +# Cómo crear una extensión desde cero diff --git a/website/doc/v0.0/es/src/tutorials/create-a-package-from-scratch.md b/website/doc/v0.0/es/src/tutorials/create-a-package-from-scratch.md deleted file mode 100644 index 60d46ff3..00000000 --- a/website/doc/v0.0/es/src/tutorials/create-a-package-from-scratch.md +++ /dev/null @@ -1,156 +0,0 @@ -# Cómo crear un paquete desde cero - -Este tutorial describe cómo se ha creado el módulo `pagetop-jquery` para incluir la librería [jQuery](https://jquery.com) en las páginas web generadas por otros módulos o aplicaciones desarrolladas con **PageTop**. - - -# Primeros pasos - -Para este tutorial se suponen conocimientos de programación con [Rust](https://www.rust-lang.org), del gestor de paquetes [`cargo`](https://doc.rust-lang.org/stable/cargo), así como de la [API de PageTop](https://docs.rs/pagetop). Los ejemplos están pensados para entornos Linux pero no deberían ser muy diferentes en otros sistemas operativos. - -## Crear el proyecto - -La forma más sencilla de empezar es rompiendo el hielo con el gestor de paquetes `cargo` siguiendo los mismos pasos que en cualquier otro proyecto Rust: - -```bash -cargo new --lib pagetop-jquery -``` - -Accede al proyecto recién creado y añade la dependiencia a **PageTop**: - -```bash -cd pagetop-jquery -cargo add pagetop -``` - -## Soporte multilingüe - -La [API de localización](https://docs.rs/pagetop/latest/pagetop/locale/index.html) de **PageTop** proporciona soporte multilingüe a los módulos. Primero crea la estructura de carpetas para los archivos de los textos en inglés y español (únicos idiomas soportados actualmente): - -```bash -mkdir src/locale -mkdir src/locale/en-US -mkdir src/locale/es-ES -``` - -Crea el archivo `src\locale\en-US\module.flt` con las siguientes asignaciones para identificar y describir el módulo: - -```ini -package_name = jQuery support -package_description = Integrate the jQuery library into web pages generated by other modules. -``` - -Y su archivo equivalente `src\locale\es-ES\module.flt` para las mismas asignaciones en español: - -```ini -package_name = Soporte a jQuery -package_description = Incorpora la librería jQuery en páginas web generadas por otros módulos. -``` - -Estas primeras asignaciones suelen ser habituales en todos los módulos. - -## Iniciar el módulo - -Para desarrollar un módulo **PageTop** hay que implementar los métodos necesarios del *trait* [`ModuleTrait`](https://docs.rs/pagetop/latest/pagetop/core/module/trait.ModuleTrait.html) sobre una estructura vacía que se puede inicializar en el archivo `src/lib.rs`: - -```rust -use pagetop::prelude::*; - -static_locales!(LOCALES_JQUERY); - -#[derive(AssignHandle)] -pub struct JQuery; - -impl ModuleTrait for JQuery { - fn name(&self) -> L10n { - L10n::t("package_name", &LOCALES_JQUERY) - } - - fn description(&self) -> L10n { - L10n::t("package_description", &LOCALES_JQUERY) - } -} -``` - -La función [`handle()`](https://docs.rs/pagetop/latest/pagetop/core/module/trait.ModuleTrait.html#method.handle) es la única que obligatoriamente debe implementarse porque permite asignar al módulo un identificador único creado previamente con la macro [`create_handle!()`](https://docs.rs/pagetop/latest/pagetop/macro.create_handle.html). - -El soporte multilingüe se incorpora con la macro [`static_locales!()`](https://docs.rs/pagetop/latest/pagetop/macro.static_locales.html) asignando un identificador a la ruta de los archivos de localización (que puede omitirse si la ruta es `src/locale`). - -Las funciones [`name()`](https://docs.rs/pagetop/latest/pagetop/core/module/trait.ModuleTrait.html#method.name) y [`description()`](https://docs.rs/pagetop/latest/pagetop/core/module/trait.ModuleTrait.html#method.description) son opcionales, aunque se recomienda su implementación para identificar y describir adecuadamente el módulo. Hacen uso del componente [`L10n`](https://docs.rs/pagetop/latest/pagetop/base/component/struct.L10n.html) y de los archivos de localización creados en el apartado anterior para devolver los textos en el idioma del contexto. - -# Archivos estáticos - -Seguimos en el directorio del proyecto, al mismo nivel de `src`. Es buena práctica crear una carpeta de nombre `static` para los archivos estáticos. En ella descargaremos los archivos `jquery.min.js` y `jquery.min.map` de la librería **jQuery**: - -```bash -mkdir static -``` - -## Crear el archivo build.rs - -Para que estos archivos estáticos formen parte del binario de la aplicación hay que añadir dos nuevas dependencias al proyecto: - -```bash -cargo add static-files -cargo add pagetop-build --build -``` - -Y crear un archivo `build.rs` con el siguiente código para incorporar el directorio `./static` en los recursos de compilación del proyecto: - -```rust -use pagetop_build::StaticFilesBundle; - -fn main() -> std::io::Result<()> { - StaticFilesBundle::from_dir("./static") - .with_name("jquery") - .build() -} -``` - -En este momento el proyecto tiene la siguiente estructura de directorios y archivos: - -```bash -pagetop-jquery/ - ├── src/ - │ ├── locale/ - │ │ ├── en-ES/ - │ │ │ └── module.flt - │ │ └── es-ES/ - │ │ └── module.flt - │ └── lib.rs - ├── static/ - │ ├── jquery.min.js - │ └── jquery.min.map - └── Cargo.toml - ``` - -## Declarar los archivos en el módulo - -En `src/lib.rs` incorpora los recursos estáticos con `static_files!()` usando como identificador el nombre proporcionado al *bundle* de archivos en `build.rs` con `.with_name("jquery")`, pero ahora sin las comillas dobles: - -```rust -static_files!(jquery); -``` - -Y en la implementación de `JQuery` añade la función `configure_service()` para configurar el servicio web que responderá a las peticiones cuando el *path* comience por `/jquery/*` usando la macro [`configure_service_for_static_files!()`](): - -```rust -impl ModuleTrait for JQuery { - ... - fn configure_service(&self, cfg: &mut service::web::ServiceConfig) { - configure_service_for_static_files!(cfg, jquery => "/jquery"); - } - ... -} -``` - -De esta forma, a la petición `/jquery/jquery.min.js` el servidor web responderá devolviendo el archivo estático `./static/jquery.min.js`. - -# La API del módulo - -Este módulo proporciona funciones públicas para añadir o quitar del contexto los recursos de **jQuery**: - --------------------- - -***Notas*** - -* Puede que el código del módulo no sea el mismo que aquí se reproduce. El sentido de este tutorial es proporcionar una explicación sencilla de los principales elementos de un módulo. diff --git a/website/src/main.rs b/website/src/main.rs index a58a3a2b..0c83c0b0 100644 --- a/website/src/main.rs +++ b/website/src/main.rs @@ -8,7 +8,7 @@ include_locales!(LOCALES_WEBSITE); struct PageTopWebSite; -impl PackageTrait for PageTopWebSite { +impl ExtensionTrait for PageTopWebSite { fn name(&self) -> L10n { L10n::t("app_name", &LOCALES_WEBSITE) } @@ -17,9 +17,9 @@ impl PackageTrait for PageTopWebSite { L10n::t("app_description", &LOCALES_WEBSITE) } - fn dependencies(&self) -> Vec { + fn dependencies(&self) -> Vec { vec![ - // Paquetes. + // Extensiones. &pagetop_mdbook::MdBook, // Temas. &pagetop_bootsier::Bootsier,