diff --git a/Cargo.lock b/Cargo.lock index cab741e..e0d497c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -44,9 +44,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.11.2" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" +checksum = "44cceded2fb55f3c4b67068fa64962e2ca59614edc5b03167de9ff82ae803da0" dependencies = [ "actix-codec", "actix-rt", @@ -227,9 +227,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.25.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] @@ -328,9 +328,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.21" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -343,9 +343,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.13" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" @@ -390,9 +390,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.76" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -400,7 +400,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-link", + "windows-targets 0.52.6", ] [[package]] @@ -484,9 +484,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.41" +version = "1.2.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +checksum = "80f41ae168f955c12fb8960b057d70d0ca153fb83182b57d86380443527be7e9" dependencies = [ "find-msvc-tools", "jobserver", @@ -520,7 +520,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -589,9 +589,9 @@ checksum = "7439becb5fafc780b6f4de382b1a7a3e70234afe783854a4702ee8adbb838609" [[package]] name = "config" -version = "0.15.18" +version = "0.15.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e549344080374f9b32ed41bf3b6b57885ff6a289367b3dbc10eea8acc1918" +checksum = "cef036f0ecf99baef11555578630e2cca559909b4c50822dbba828c252d21c49" dependencies = [ "pathdiff", "serde_core", @@ -703,9 +703,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", ] @@ -788,7 +788,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.61.0", ] [[package]] @@ -805,15 +805,15 @@ checksum = "4742a071cd9694fc86f9fa1a08fa3e53d40cc899d7ee532295da2d085639fbc5" [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "1ced73b1dacfc750a6db6c0a0c3a3853c8b41997e2e2c563dc90804ae6867959" [[package]] name = "flate2" -version = "1.1.4" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "miniz_oxide", @@ -851,7 +851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54f0d287c53ffd184d04d8677f590f4ac5379785529e5e08b1c8083acdd5c198" dependencies = [ "memchr", - "thiserror 2.0.17", + "thiserror 2.0.16", ] [[package]] @@ -994,9 +994,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.32.3" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -1356,9 +1356,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "852f13bec5eba4ba9afbeb93fd7c13fe56147f055939ae21c43a29a0ecb2702e" dependencies = [ "once_cell", "wasm-bindgen", @@ -1387,9 +1387,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "linux-raw-sys" @@ -1422,10 +1422,11 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.14" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ + "autocfg", "scopeguard", ] @@ -1446,9 +1447,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" @@ -1473,7 +1474,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", - "simd-adler32", ] [[package]] @@ -1520,9 +1520,9 @@ dependencies = [ [[package]] name = "object" -version = "0.37.3" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -1560,7 +1560,6 @@ dependencies = [ "fluent-templates", "indoc", "itoa", - "pagetop-aliner", "pagetop-build", "pagetop-macros", "pagetop-statics", @@ -1577,14 +1576,6 @@ dependencies = [ "unic-langid", ] -[[package]] -name = "pagetop-aliner" -version = "0.0.9" -dependencies = [ - "pagetop", - "pagetop-build", -] - [[package]] name = "pagetop-build" version = "0.3.1" @@ -1617,9 +1608,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.5" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1627,15 +1618,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.12" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-link", + "windows-targets 0.52.6", ] [[package]] @@ -1822,9 +1813,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -1896,18 +1887,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.18" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.11.3" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", @@ -1917,9 +1908,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.11" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", @@ -1969,7 +1960,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.61.0", ] [[package]] @@ -2013,9 +2004,9 @@ checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "fd6c24dee235d0da097043389623fb913daddf92c76e9f5a1db88607a0bcbd1d" dependencies = [ "serde_core", "serde_derive", @@ -2023,18 +2014,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "659356f9a0cb1e529b24c01e43ad2bdf520ec4ceaf83047b83ddcc2251f96383" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.225" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "0ea936adf78b1f766949a4977b91d2f5595825bd6ec079aa9543ad2685fc4516" dependencies = [ "proc-macro2", "quote", @@ -2056,9 +2047,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "5417783452c2be558477e104686f7de5dae53dba813c28435e0e70f82d9b04ee" dependencies = [ "serde_core", ] @@ -2121,12 +2112,6 @@ dependencies = [ "libc", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - [[package]] name = "siphasher" version = "1.0.1" @@ -2176,9 +2161,9 @@ dependencies = [ [[package]] name = "stable_deref_trait" -version = "1.2.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" @@ -2225,15 +2210,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.23.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.61.0", ] [[package]] @@ -2257,11 +2242,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.17", + "thiserror-impl 2.0.16", ] [[package]] @@ -2277,9 +2262,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -2370,9 +2355,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" dependencies = [ "serde_core", "serde_spanned", @@ -2383,18 +2368,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "32f1085dec27c2b6632b04c80b3bb1b4300d6495d1e129693bdda7d91e72eec1" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" dependencies = [ "winnow", ] @@ -2510,9 +2495,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.19.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unic-langid" @@ -2674,9 +2659,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "ab10a69fbd0a177f5f649ad4d8d3305499c42bab9aef2f7ff592d0ec8f833819" dependencies = [ "cfg-if", "once_cell", @@ -2687,9 +2672,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.104" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" +checksum = "0bb702423545a6007bbc368fde243ba47ca275e549c8a28617f56f6ba53b1d1c" dependencies = [ "bumpalo", "log", @@ -2701,9 +2686,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "fc65f4f411d91494355917b605e1480033152658d71f722a90647f56a70c88a0" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2711,9 +2696,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "ffc003a991398a8ee604a401e194b6b3a39677b3173d6e74495eb51b82e99a32" dependencies = [ "proc-macro2", "quote", @@ -2724,9 +2709,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "293c37f4efa430ca14db3721dfbe48d8c33308096bd44d80ebaa775ab71ba1cf" dependencies = [ "unicode-ident", ] @@ -2737,27 +2722,27 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.61.0", ] [[package]] name = "windows-core" -version = "0.62.2" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" dependencies = [ "windows-implement", "windows-interface", - "windows-link", + "windows-link 0.2.0", "windows-result", "windows-strings", ] [[package]] name = "windows-implement" -version = "0.60.2" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", @@ -2766,9 +2751,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.3" +version = "0.59.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", @@ -2777,26 +2762,32 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.2.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" [[package]] name = "windows-result" -version = "0.4.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" dependencies = [ - "windows-link", + "windows-link 0.2.0", ] [[package]] name = "windows-strings" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" dependencies = [ - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -2823,16 +2814,16 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.5", + "windows-targets 0.53.3", ] [[package]] name = "windows-sys" -version = "0.61.2" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" dependencies = [ - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -2853,19 +2844,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.5" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows-link 0.1.3", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", ] [[package]] @@ -2876,9 +2867,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -2888,9 +2879,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -2900,9 +2891,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" [[package]] name = "windows_i686_gnullvm" @@ -2912,9 +2903,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -2924,9 +2915,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -2936,9 +2927,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" [[package]] name = "windows_x86_64_gnullvm" @@ -2948,9 +2939,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -2960,9 +2951,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.1" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" diff --git a/Cargo.toml b/Cargo.toml index fe10143..913f3d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,8 +49,7 @@ default = [] testing = [] [dev-dependencies] -tempfile = "3.23" -pagetop-aliner.workspace = true +tempfile = "3.22" [build-dependencies] pagetop-build.workspace = true @@ -59,12 +58,9 @@ pagetop-build.workspace = true [workspace] resolver = "2" members = [ - # Helpers "helpers/pagetop-build", "helpers/pagetop-macros", "helpers/pagetop-statics", - # Extensions - "extensions/pagetop-aliner", ] [workspace.package] @@ -75,11 +71,7 @@ authors = ["Manuel Cillero "] [workspace.dependencies] actix-web = { version = "4.11", default-features = false } -# Helpers + pagetop-build = { version = "0.3", path = "helpers/pagetop-build" } pagetop-macros = { version = "0.2", path = "helpers/pagetop-macros" } pagetop-statics = { version = "0.1", path = "helpers/pagetop-statics" } -# Extensions -pagetop-aliner = { version = "0.0", path = "extensions/pagetop-aliner" } -# PageTop -pagetop = { version = "0.4", path = "." } diff --git a/extensions/pagetop-aliner/Cargo.toml b/extensions/pagetop-aliner/Cargo.toml deleted file mode 100644 index 1c1101f..0000000 --- a/extensions/pagetop-aliner/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "pagetop-aliner" -version = "0.0.9" -edition = "2021" - -description = """ - Tema para PageTop que muestra esquemáticamente la composición de las páginas HTML -""" -categories = ["web-programming", "gui"] -keywords = ["pagetop", "theme", "css"] - -repository.workspace = true -homepage.workspace = true -license.workspace = true -authors.workspace = true - -[dependencies] -pagetop.workspace = true - -[build-dependencies] -pagetop-build.workspace = true diff --git a/extensions/pagetop-aliner/README.md b/extensions/pagetop-aliner/README.md deleted file mode 100644 index 88e3d78..0000000 --- a/extensions/pagetop-aliner/README.md +++ /dev/null @@ -1,100 +0,0 @@ -
- -

PageTop Aliner

- -

Tema para PageTop que muestra esquemáticamente la composición de las páginas HTML.

- -[![Licencia](https://img.shields.io/badge/license-MIT%2FApache-blue.svg?label=Licencia&style=for-the-badge)](#-licencia) -[![Doc API](https://img.shields.io/docsrs/pagetop-aliner?label=Doc%20API&style=for-the-badge&logo=Docs.rs)](https://docs.rs/pagetop-aliner) -[![Crates.io](https://img.shields.io/crates/v/pagetop-aliner.svg?style=for-the-badge&logo=ipfs)](https://crates.io/crates/pagetop-aliner) -[![Descargas](https://img.shields.io/crates/d/pagetop-aliner.svg?label=Descargas&style=for-the-badge&logo=transmission)](https://crates.io/crates/pagetop-aliner) - -
-
- -## Sobre PageTop - -[PageTop](https://docs.rs/pagetop) es un entorno de desarrollo que reivindica la esencia de la web -clásica para crear soluciones web SSR (*renderizadas en el servidor*) modulares, extensibles y -configurables, basadas en HTML, CSS y JavaScript. - - -# ⚡️ Guía rápida - -Igual que con otras extensiones, **añade la dependencia** a tu `Cargo.toml`: - -```toml -[dependencies] -pagetop-aliner = "..." -``` - -**Declara la extensión** en tu aplicación (o extensión que la requiera). Recuerda que el orden en -`dependencies()` determina la prioridad relativa frente a las otras extensiones: - -```rust,no_run -use pagetop::prelude::*; - -struct MyApp; - -impl Extension for MyApp { - fn dependencies(&self) -> Vec { - vec![ - // ... - &pagetop_aliner::Aliner, - // ... - ] - } -} - -#[pagetop::main] -async fn main() -> std::io::Result<()> { - Application::prepare(&MyApp).run()?.await -} -``` - -Y **selecciona el tema en la configuración** de la aplicación: - -```toml -[app] -theme = "Aliner" -``` - -…o **fuerza el tema por código** en una página concreta: - -```rust,no_run -use pagetop::prelude::*; - -async fn homepage(request: HttpRequest) -> ResultPage { - Page::new(request) - .with_theme("Aliner") - .add_component( - Block::new() - .with_title(L10n::l("sample_title")) - .add_component(Html::with(|cx| html! { - p { (L10n::l("sample_content").using(cx)) } - })), - ) - .render() -} -``` - - -# 🚧 Advertencia - -**PageTop** es un proyecto personal para aprender [Rust](https://www.rust-lang.org/es) y conocer su -ecosistema. Su API está sujeta a cambios frecuentes. No se recomienda su uso en producción, al menos -hasta que se libere la versión **1.0.0**. - - -# 📜 Licencia - -El código está disponible bajo una doble licencia: - - * **Licencia MIT** - ([LICENSE-MIT](LICENSE-MIT) o también https://opensource.org/licenses/MIT) - - * **Licencia Apache, Versión 2.0** - ([LICENSE-APACHE](LICENSE-APACHE) o también https://www.apache.org/licenses/LICENSE-2.0) - -Puedes elegir la licencia que prefieras. Este enfoque de doble licencia es el estándar de facto en -el ecosistema Rust. diff --git a/extensions/pagetop-aliner/build.rs b/extensions/pagetop-aliner/build.rs deleted file mode 100644 index 26713f5..0000000 --- a/extensions/pagetop-aliner/build.rs +++ /dev/null @@ -1,7 +0,0 @@ -use pagetop_build::StaticFilesBundle; - -fn main() -> std::io::Result<()> { - StaticFilesBundle::from_dir("./static", None) - .with_name("aliner") - .build() -} diff --git a/extensions/pagetop-aliner/src/lib.rs b/extensions/pagetop-aliner/src/lib.rs deleted file mode 100644 index 8e9b03a..0000000 --- a/extensions/pagetop-aliner/src/lib.rs +++ /dev/null @@ -1,118 +0,0 @@ -/*! -
- -

PageTop Aliner

- -

Tema para PageTop que muestra esquemáticamente la composición de las páginas HTML.

- -[![Licencia](https://img.shields.io/badge/license-MIT%2FApache-blue.svg?label=Licencia&style=for-the-badge)](#-licencia) -[![Doc API](https://img.shields.io/docsrs/pagetop-aliner?label=Doc%20API&style=for-the-badge&logo=Docs.rs)](https://docs.rs/pagetop-aliner) -[![Crates.io](https://img.shields.io/crates/v/pagetop-aliner.svg?style=for-the-badge&logo=ipfs)](https://crates.io/crates/pagetop-aliner) -[![Descargas](https://img.shields.io/crates/d/pagetop-aliner.svg?label=Descargas&style=for-the-badge&logo=transmission)](https://crates.io/crates/pagetop-aliner) - -
-
- -## Sobre PageTop - -[PageTop](https://docs.rs/pagetop) es un entorno de desarrollo que reivindica la esencia de la web -clásica para crear soluciones web SSR (*renderizadas en el servidor*) modulares, extensibles y -configurables, basadas en HTML, CSS y JavaScript. - - -# ⚡️ Guía rápida - -Igual que con otras extensiones, **añade la dependencia** a tu `Cargo.toml`: - -```toml -[dependencies] -pagetop-aliner = "..." -``` - -**Declara la extensión** en tu aplicación (o extensión que la requiera). Recuerda que el orden en -`dependencies()` determina la prioridad relativa frente a las otras extensiones: - -```rust,no_run -use pagetop::prelude::*; - -struct MyApp; - -impl Extension for MyApp { - fn dependencies(&self) -> Vec { - vec![ - // ... - &pagetop_aliner::Aliner, - // ... - ] - } -} - -#[pagetop::main] -async fn main() -> std::io::Result<()> { - Application::prepare(&MyApp).run()?.await -} -``` - -Y **selecciona el tema en la configuración** de la aplicación: - -```toml -[app] -theme = "Aliner" -``` - -…o **fuerza el tema por código** en una página concreta: - -```rust,no_run -use pagetop::prelude::*; - -async fn homepage(request: HttpRequest) -> ResultPage { - Page::new(request) - .with_theme("Aliner") - .add_component( - Block::new() - .with_title(L10n::l("sample_title")) - .add_component(Html::with(|cx| html! { - p { (L10n::l("sample_content").using(cx)) } - })), - ) - .render() -} -``` -*/ - -use pagetop::prelude::*; - -/// El tema usa las mismas regiones predefinidas por [`ThemeRegion`]. -pub type AlinerRegion = ThemeRegion; - -/// Implementa el tema para usar en pruebas que muestran el esquema de páginas HTML. -/// -/// Tema mínimo ideal para **pruebas y demos** que renderiza el **esqueleto HTML** con las mismas -/// regiones básicas definidas por [`ThemeRegion`]. No pretende ser un tema para producción, está -/// pensado para: -/// -/// - Verificar integración de componentes y composiciones (*layouts*) sin estilos complejos. -/// - Realizar pruebas de renderizado rápido con salida estable y predecible. -/// - Preparar ejemplos y documentación, sin dependencias visuales (CSS/JS) innecesarias. -pub struct Aliner; - -impl Extension for Aliner { - fn theme(&self) -> Option { - Some(&Self) - } - - fn configure_service(&self, scfg: &mut service::web::ServiceConfig) { - static_files_service!(scfg, [aliner] => "/aliner"); - } -} - -impl Theme for Aliner { - fn before_render_page_body(&self, page: &mut Page) { - page.alter_param("include_basic_css", true) - .alter_assets(ContextOp::AddStyleSheet( - StyleSheet::from("/aliner/css/styles.css") - .with_version(env!("CARGO_PKG_VERSION")) - .with_weight(-90), - )); - } -} diff --git a/extensions/pagetop-aliner/static/css/styles.css b/extensions/pagetop-aliner/static/css/styles.css deleted file mode 100644 index 1cc2f5d..0000000 --- a/extensions/pagetop-aliner/static/css/styles.css +++ /dev/null @@ -1,356 +0,0 @@ -html { - background-color: white; - padding: 1px 3px; -} -body { - padding: 1px 3px; -} -div { - padding: 1px 3px; - margin: 5px; -} -h1, h2, h3, h4,h5, h6, p { - background-color: snow; -} -* * { - outline: 5px solid rgba(255,0,0,.1); -} -* * * { - outline: 3px dashed rgba(255,0,0,.4); -} -* * * * { - outline: 2px dotted rgba(255,0,0,.6); -} -* * * * * { - outline: 1px dotted rgba(255,0,0,.9); -} -* * * * * * { - outline-color: gray; -} - -*::before, *::after { - background: #faa; - border-radius: 3px; - font: normal normal 400 10px/1.2 monospace; - vertical-align: middle; - padding: 1px 3px; - margin: 0 3px; -} -*::before { - content: "("; -} -*::after { - content: ")"; -} - -a::before { content: ""; } -a::after { content: ""; } -abbr::before { content: ""; } -abbr::after { content: ""; } -acronym::before { content: ""; } -acronym::after { content: ""; } -address::before { content: "
"; } -address::after { content: "
"; } -applet::before { content: ""; } -applet::after { content: ""; } -area::before { content: ""; } -area::after { content: ""; } -article::before { content: "
"; } -article::after { content: "
"; } -aside::before { content: ""; } -audio::before { content: ""; } - -b::before { content: ""; } -b::after { content: ""; } -base::before { content: ""; } -base::after { content: ""; } -basefont::before { content: ""; } -basefont::after { content: ""; } -bdi::before { content: ""; } -bdi::after { content: ""; } -bdo::before { content: ""; } -bdo::after { content: ""; } -bgsound::before { content: ""; } -bgsound::after { content: ""; } -big::before { content: ""; } -big::after { content: ""; } -blink::before { content: ""; } -blink::after { content: ""; } -blockquote::before { content: "
"; } -blockquote::after { content: "
"; } -body::before { content: ""; } -body::after { content: ""; } -br::before { content: "
"; } -br::after { content: "
"; } -button::before { content: ""; } - -caption::before { content: ""; } -caption::after { content: ""; } -canvas::before { content: ""; } -canvas::after { content: ""; } -center::before { content: "
"; } -center::after { content: "
"; } -cite::before { content: ""; } -cite::after { content: ""; } -code::before { content: ""; } -code::after { content: ""; } -col::before { content: ""; } -col::after { content: ""; } -colgroup::before { content: ""; } -colgroup::after { content: ""; } -command::before { content: ""; } -command::after { content: ""; } -content::before { content: ""; } -content::after { content: ""; } - -data::before { content: ""; } -data::after { content: ""; } -datalist::before { content: ""; } -datalist::after { content: ""; } -dd::before { content: "
"; } -dd::after { content: "
"; } -del::before { content: ""; } -del::after { content: ""; } -details::before { content: "
"; } -details::after { content: "
"; } -dfn::before { content: ""; } -dfn::after { content: ""; } -dialog::before { content: ""; } -dialog::after { content: ""; } -dir::before { content: ""; } -dir::after { content: ""; } -div::before { content: "
"; } -div::after { content: "
"; } -dl::before { content: "
"; } -dl::after { content: "
"; } -dt::before { content: "
"; } -dt::after { content: "
"; } - -element::before { content: ""; } -element::after { content: ""; } -em::before { content: ""; } -em::after { content: ""; } -embed::before { content: ""; } -embed::after { content: ""; } - -fieldset::before { content: "
"; } -fieldset::after { content: "
"; } -figcaption::before { content: "
"; } -figcaption::after { content: "
"; } -figure::before { content: "
"; } -figure::after { content: "
"; } -font::before { content: ""; } -font::after { content: ""; } -footer::before { content: "
"; } -footer::after { content: "
"; } -form::before { content: "
"; } -form::after { content: "
"; } -frame::before { content: ""; } -frame::after { content: ""; } -frameset::before { content: ""; } -frameset::after { content: ""; } - -h1::before { content: "

"; } -h1::after { content: "

"; } -h2::before { content: "

"; } -h2::after { content: "

"; } -h3::before { content: "

"; } -h3::after { content: "

"; } -h4::before { content: "

"; } -h4::after { content: "

"; } -h5::before { content: "
"; } -h5::after { content: "
"; } -h6::before { content: "
"; } -h6::after { content: "
"; } -head::before { content: ""; } -head::after { content: ""; } -header::before { content: "
"; } -header::after { content: "
"; } -hgroup::before { content: "
"; } -hgroup::after { content: "
"; } -hr::before { content: "
"; } -hr::after { content: ""; } -html::before { content: ""; } -html::after { content: ""; } - -i::before { content: ""; } -i::after { content: ""; } -iframe::before { content: ""; } -image::before { content: ""; } -image::after { content: ""; } -img::before { content: ""; } -img::after { content: ""; } -input::before { content: ""; } -input::after { content: ""; } -ins::before { content: ""; } -ins::after { content: ""; } -isindex::before { content: ""; } -isindex::after { content: ""; } - -kbd::before { content: ""; } -kbd::after { content: ""; } -keygen::before { content: ""; } -keygen::after { content: ""; } - -label::before { content: ""; } -legend::before { content: ""; } -legend::after { content: ""; } -li::before { content: "
  • "; } -li::after { content: "
  • "; } -link::before { content: ""; } -link::after { content: ""; } -listing::before { content: ""; } -listing::after { content: ""; } - -main::before { content: "
    "; } -main::after { content: "
    "; } -map::before { content: ""; } -map::after { content: ""; } -mark::before { content: ""; } -mark::after { content: ""; } -marquee::before { content: ""; } -marquee::after { content: ""; } -menu::before { content: ""; } -menu::after { content: ""; } -menuitem::before { content: ""; } -menuitem::after { content: ""; } -meta::before { content: ""; } -meta::after { content: ""; } -meter::before { content: ""; } -meter::after { content: ""; } -multicol::before { content: ""; } -multicol::after { content: ""; } - -nav::before { content: ""; } -nextid::before { content: ""; } -nextid::after { content: ""; } -nobr::before { content: ""; } -nobr::after { content: ""; } -noembed::before { content: ""; } -noembed::after { content: ""; } -noframes::before { content: ""; } -noframes::after { content: ""; } -noscript::before { content: ""; } - -object::before { content: ""; } -object::after { content: ""; } -ol::before { content: "
      "; } -ol::after { content: "
    "; } -optgroup::before { content: ""; } -optgroup::after { content: ""; } -option::before { content: ""; } -output::before { content: ""; } -output::after { content: ""; } - -p::before { content: "

    "; } -p::after { content: "

    "; } -param::before { content: ""; } -param::after { content: ""; } -picture::before { content: ""; } -picture::after { content: ""; } -plaintext::before { content: ""; } -plaintext::after { content: "</plaintext>"; } -pre::before { content: "<pre>"; } -pre::after { content: "</pre>"; } -progress::before { content: "<progress>"; } -progress::after { content: "</progress>"; } - -q::before { content: "<q>"; } -q::after { content: "</q>"; } - -rb::before { content: "<rb>"; } -rb::after { content: "</rb>"; } -rp::before { content: "<rp>"; } -rp::after { content: "</rp>"; } -rt::before { content: "<rt>"; } -rt::after { content: "</rt>"; } -rtc::before { content: "<rtc>"; } -rtc::after { content: "</rtc>"; } -ruby::before { content: "<ruby>"; } -ruby::after { content: "</ruby>"; } - -s::before { content: "<s>"; } -s::after { content: "</s>"; } -samp::before { content: "<samp>"; } -samp::after { content: "</samp>"; } -script::before { content: "<script>"; } -script::after { content: "</script>"; } -section::before { content: "<section>"; } -section::after { content: "</section>"; } -select::before { content: "<select>"; } -select::after { content: "</select>"; } -shadow::before { content: "<shadow>"; } -shadow::after { content: "</shadow>"; } -slot::before { content: "<slot>"; } -slot::after { content: "</slot>"; } -small::before { content: "<small>"; } -small::after { content: "</small>"; } -source::before { content: "<source>"; } -source::after { content: "</source>"; } -spacer::before { content: "<spacer>"; } -spacer::after { content: "</spacer>"; } -span::before { content: "<span>"; } -span::after { content: "</span>"; } -strike::before { content: "<strike>"; } -strike::after { content: "</strike>"; } -strong::before { content: "<strong>"; } -strong::after { content: "</strong>"; } -style::before { content: "<style>"; } -style::after { content: "<\/style>"; } -sub::before { content: "<sub>"; } -sub::after { content: "</sub>"; } -summary::before { content: "<summary>"; } -summary::after { content: "</summary>"; } -sup::before { content: "<sup>"; } -sup::after { content: "</sup>"; } - -table::before { content: "<table>"; } -table::after { content: "</table>"; } -tbody::before { content: "<tbody>"; } -tbody::after { content: "</tbody>"; } -td::before { content: "<td>"; } -td::after { content: "</td>"; } -template::before { content: "<template>"; } -template::after { content: "</template>"; } -textarea::before { content: "<textarea>"; } -textarea::after { content: "</textarea>"; } -tfoot::before { content: "<tfoot>"; } -tfoot::after { content: "</tfoot>"; } -th::before { content: "<th>"; } -th::after { content: "</th>"; } -thead::before { content: "<thead>"; } -thead::after { content: "</thead>"; } -time::before { content: "<time>"; } -time::after { content: "</time>"; } -title::before { content: "<title>"; } -title::after { content: "</title>"; } -tr::before { content: "<tr>"; } -tr::after { content: "</tr>"; } -track::before { content: "<track>"; } -track::after { content: "</track>"; } -tt::before { content: "<tt>"; } -tt::after { content: "</tt>"; } - -u::before { content: "<u>"; } -u::after { content: "</u>"; } -ul::before { content: "<ul>"; } -ul::after { content: "</ul>"; } - -var::before { content: "<var>"; } -var::after { content: "</var>"; } -video::before { content: "<video>"; } -video::after { content: "</video>"; } - -wbr::before { content: "<wbr>"; } -wbr::after { content: "</wbr>"; } - -xmp::before { content: "<xmp>"; } -xmp::after { content: "</xmp>"; } diff --git a/src/base/component/html.rs b/src/base/component/html.rs index a60d30f..b8c4aaa 100644 --- a/src/base/component/html.rs +++ b/src/base/component/html.rs @@ -8,7 +8,8 @@ use crate::prelude::*; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let component = Html::with(|_| { /// html! { /// div class="example" { @@ -21,7 +22,8 @@ use crate::prelude::*; /// Para renderizar contenido que dependa del contexto, se puede acceder a él dentro del *closure*: /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let component = Html::with(|cx| { /// let user = cx.param::<String>("username").cloned().unwrap_or("visitor".to_string()); /// html! { diff --git a/src/base/component/menu/item.rs b/src/base/component/menu/item.rs index c634218..c9f7903 100644 --- a/src/base/component/menu/item.rs +++ b/src/base/component/menu/item.rs @@ -137,14 +137,14 @@ impl Item { ..Default::default() } } - - pub fn megamenu(label: L10n, megamenu: menu::Megamenu) -> Self { + /* + pub fn megamenu(label: L10n, megamenu: Megamenu) -> Self { Item { item_kind: ItemKind::Megamenu(label, MegamenuGroups::with(megamenu)), ..Default::default() } } - + */ // **< Item BUILDER >*************************************************************************** #[builder_fn] diff --git a/src/base/component/poweredby.rs b/src/base/component/poweredby.rs index d77d65c..4b54af3 100644 --- a/src/base/component/poweredby.rs +++ b/src/base/component/poweredby.rs @@ -47,7 +47,8 @@ impl PoweredBy { /// eliminará, pero en este caso es necesario especificar el tipo explícitamente: /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let p1 = PoweredBy::default().with_copyright(Some("2001 © Foo Inc.")); /// let p2 = PoweredBy::new().with_copyright(None::<String>); /// ``` diff --git a/src/core.rs b/src/core.rs index 9ecbd2e..79d9207 100644 --- a/src/core.rs +++ b/src/core.rs @@ -122,7 +122,8 @@ impl TypeInfo { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let n = 3u32; /// assert_eq!(n.type_name(), "u32"); /// ``` diff --git a/src/core/action.rs b/src/core/action.rs index 9f81cd5..cbbe79c 100644 --- a/src/core/action.rs +++ b/src/core/action.rs @@ -22,7 +22,8 @@ pub use all::dispatch_actions; /// # Ejemplo /// /// ```rust,ignore -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// impl Extension for MyTheme { /// fn actions(&self) -> Vec<ActionBox> { /// actions_boxed![ diff --git a/src/core/component/context.rs b/src/core/component/context.rs index 8c4e47e..f58d381 100644 --- a/src/core/component/context.rs +++ b/src/core/component/context.rs @@ -66,7 +66,8 @@ pub enum ContextError { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// fn prepare_context<C: Contextual>(cx: C) -> C { /// cx.with_langid(&LangMatch::resolve("es-ES")) /// .with_theme("aliner") @@ -167,7 +168,8 @@ pub trait Contextual: LangId { /// Crea un nuevo contexto asociado a una solicitud HTTP: /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// fn new_context(request: HttpRequest) -> Context { /// Context::new(Some(request)) /// // Establece el idioma del documento a español. @@ -188,7 +190,8 @@ pub trait Contextual: LangId { /// Y hace operaciones con un contexto dado: /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// fn use_context(cx: &mut Context) { /// // Recupera el tema seleccionado. /// let active_theme = cx.theme(); @@ -307,7 +310,8 @@ impl Context { /// # Ejemplos /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let cx = Context::new(None) /// .with_param("usuario_id", 42_i32) /// .with_param("titulo", "Hola".to_string()); @@ -339,7 +343,8 @@ impl Context { /// # Ejemplos /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let mut cx = Context::new(None) /// .with_param("contador", 7_i32) /// .with_param("titulo", "Hola".to_string()); @@ -369,7 +374,8 @@ impl Context { /// # Ejemplos /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let mut cx = Context::new(None).with_param("temp", 1u8); /// assert!(cx.remove_param("temp")); /// assert!(!cx.remove_param("temp")); // ya no existe @@ -435,7 +441,8 @@ impl Contextual for Context { /// # Ejemplos /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let cx = Context::new(None) /// .with_param("usuario_id", 42_i32) /// .with_param("titulo", "Hola".to_string()) @@ -510,7 +517,8 @@ impl Contextual for Context { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let cx = Context::new(None).with_param("username", "Alice".to_string()); /// /// // Devuelve Some(&String) si existe y coincide el tipo. diff --git a/src/core/extension/definition.rs b/src/core/extension/definition.rs index 5699130..90bdbad 100644 --- a/src/core/extension/definition.rs +++ b/src/core/extension/definition.rs @@ -16,7 +16,8 @@ pub type ExtensionRef = &'static dyn Extension; /// extensión y sobreescribir los métodos que sea necesario. /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// pub struct Blog; /// /// impl Extension for Blog { @@ -44,7 +45,8 @@ pub trait Extension: AnyInfo + Send + Sync { /// la extensión no es un tema, este método devuelve `None` por defecto. /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// pub struct MyTheme; /// /// impl Extension for MyTheme { @@ -86,7 +88,8 @@ pub trait Extension: AnyInfo + Send + Sync { /// estáticos, etc., usando [`ServiceConfig`](crate::service::web::ServiceConfig). /// /// ```rust,ignore - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// pub struct ExtensionSample; /// /// impl Extension for ExtensionSample { diff --git a/src/core/theme/definition.rs b/src/core/theme/definition.rs index 4e7db77..7ef95c4 100644 --- a/src/core/theme/definition.rs +++ b/src/core/theme/definition.rs @@ -155,7 +155,8 @@ pub trait ThemePage { /// **obligatorio** de `Extension` para un tema es [`theme()`](Extension::theme). /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// pub struct MyTheme; /// /// impl Extension for MyTheme { diff --git a/src/core/theme/regions.rs b/src/core/theme/regions.rs index 8e386f5..ecb5eb5 100644 --- a/src/core/theme/regions.rs +++ b/src/core/theme/regions.rs @@ -37,7 +37,8 @@ pub const REGION_CONTENT: &str = "content"; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// pub enum MyThemeRegion { /// Header, /// Content, @@ -133,7 +134,8 @@ impl InRegion { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// // Banner global, en la región por defecto de cualquier página. /// InRegion::Content.add(Child::with(Html::with(|_| /// html! { ("🎉 ¡Bienvenido!") } diff --git a/src/html.rs b/src/html.rs index abc8e8c..a86c9f7 100644 --- a/src/html.rs +++ b/src/html.rs @@ -93,7 +93,8 @@ pub type OptionComponent<C: core::component::Component> = core::component::Typed /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Texto normal, se escapa automáticamente para evitar inyección de HTML. /// let fragment = PrepareMarkup::Escaped("Hola <b>mundo</b>".to_string()); /// assert_eq!(fragment.render().into_string(), "Hola &lt;b&gt;mundo&lt;/b&gt;"); diff --git a/src/html/assets/favicon.rs b/src/html/assets/favicon.rs index dce3e1b..c2280aa 100644 --- a/src/html/assets/favicon.rs +++ b/src/html/assets/favicon.rs @@ -18,7 +18,8 @@ use crate::AutoDefault; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let favicon = Favicon::new() /// // Estándar de facto admitido por todos los navegadores. /// .with_icon("/icons/favicon.ico") diff --git a/src/html/assets/javascript.rs b/src/html/assets/javascript.rs index 6dc9b85..dde5f94 100644 --- a/src/html/assets/javascript.rs +++ b/src/html/assets/javascript.rs @@ -46,7 +46,8 @@ enum Source { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Script externo con carga diferida, versión de caché y prioridad en el renderizado. /// let script = JavaScript::defer("/assets/js/app.js") /// .with_version("1.2.3") diff --git a/src/html/assets/stylesheet.rs b/src/html/assets/stylesheet.rs index 8d1bf29..49cb991 100644 --- a/src/html/assets/stylesheet.rs +++ b/src/html/assets/stylesheet.rs @@ -62,7 +62,8 @@ impl TargetMedia { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Crea una hoja de estilos externa con control de versión y medio específico (`screen`). /// let stylesheet = StyleSheet::from("/assets/css/main.css") /// .with_version("2.0.1") diff --git a/src/html/attr_classes.rs b/src/html/attr_classes.rs index bb88f58..80fdad7 100644 --- a/src/html/attr_classes.rs +++ b/src/html/attr_classes.rs @@ -31,7 +31,8 @@ pub enum ClassesOp { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let classes = AttrClasses::new("Btn btn-primary") /// .with_value(ClassesOp::Add, "Active") /// .with_value(ClassesOp::Remove, "btn-primary"); diff --git a/src/html/attr_id.rs b/src/html/attr_id.rs index a1d8a1d..3d5f3eb 100644 --- a/src/html/attr_id.rs +++ b/src/html/attr_id.rs @@ -12,7 +12,8 @@ use crate::{builder_fn, AutoDefault}; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let id = AttrId::new(" main Section "); /// assert_eq!(id.as_str(), Some("main_section")); /// diff --git a/src/html/attr_l10n.rs b/src/html/attr_l10n.rs index 86d1c4a..37fc80f 100644 --- a/src/html/attr_l10n.rs +++ b/src/html/attr_l10n.rs @@ -9,7 +9,8 @@ use crate::{builder_fn, AutoDefault}; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Traducción por clave en las locales por defecto de PageTop. /// let hello = AttrL10n::new(L10n::l("test-hello-world")); /// diff --git a/src/html/attr_name.rs b/src/html/attr_name.rs index 1741695..9bc9659 100644 --- a/src/html/attr_name.rs +++ b/src/html/attr_name.rs @@ -12,7 +12,8 @@ use crate::{builder_fn, AutoDefault}; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let name = AttrName::new(" DISplay name "); /// assert_eq!(name.as_str(), Some("display_name")); /// diff --git a/src/html/attr_value.rs b/src/html/attr_value.rs index b20dec3..eff8066 100644 --- a/src/html/attr_value.rs +++ b/src/html/attr_value.rs @@ -10,7 +10,8 @@ use crate::{builder_fn, AutoDefault}; /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let s = AttrValue::new(" a new string "); /// assert_eq!(s.as_str(), Some("a new string")); /// diff --git a/src/locale.rs b/src/locale.rs index 7c913ec..2bf0da9 100644 --- a/src/locale.rs +++ b/src/locale.rs @@ -76,7 +76,8 @@ //! que declarar: //! //! ```rust -//! # use pagetop::prelude::*; +//! use pagetop::prelude::*; +//! //! include_locales!(LOCALES_SAMPLE); //! ``` //! @@ -148,7 +149,8 @@ pub trait LangId { /// # Ejemplos /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Coincidencia exacta. /// let lang = LangMatch::resolve("es-ES"); /// assert_eq!(lang.langid().to_string(), "es-ES"); @@ -171,7 +173,8 @@ pub trait LangId { /// respaldo ("en-US"): /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Idioma por defecto o de respaldo si no resuelve. /// let lang = LangMatch::resolve("it-IT"); /// let langid = lang.langid(); @@ -233,7 +236,8 @@ impl LangMatch { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let lang = LangMatch::resolve("es-ES").as_option(); /// assert_eq!(lang.unwrap().to_string(), "es-ES"); /// @@ -323,7 +327,8 @@ enum L10nOp { /// Los argumentos dinámicos se añaden con `with_arg()` o `with_args()`. /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Texto literal sin traducción. /// let raw = L10n::n("© 2025 PageTop").get(); /// @@ -402,7 +407,8 @@ impl L10n { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let text = L10n::l("greeting").with_arg("name", "Manuel").get(); /// ``` pub fn get(&self) -> Option<String> { @@ -416,7 +422,8 @@ impl L10n { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// struct ResourceLang; /// /// impl LangId for ResourceLang { @@ -457,7 +464,8 @@ impl L10n { /// # Ejemplo /// /// ```rust - /// # use pagetop::prelude::*; + /// use pagetop::prelude::*; + /// /// let html = L10n::l("welcome.message").using(&LangMatch::resolve("es")); /// ``` pub fn using(&self, language: &impl LangId) -> Markup { diff --git a/src/response/json.rs b/src/response/json.rs index 0878999..fee4c12 100644 --- a/src/response/json.rs +++ b/src/response/json.rs @@ -6,7 +6,8 @@ //! tipo Rust fuertemente tipado, validando el formato y deserializando con *serde*. //! //! ```rust -//! # use pagetop::prelude::*; +//! use pagetop::prelude::*; +//! //! #[derive(serde::Deserialize)] //! struct NuevoUsuario { nombre: String, email: String } //! @@ -24,7 +25,8 @@ //! `application/json; charset=utf-8`, todo con una llamada compacta. //! //! ```rust -//! # use pagetop::prelude::*; +//! use pagetop::prelude::*; +//! //! #[derive(serde::Serialize)] //! struct Usuario { id: u32, nombre: String } //! diff --git a/src/service.rs b/src/service.rs index 9a936fc..09dc618 100644 --- a/src/service.rs +++ b/src/service.rs @@ -102,7 +102,8 @@ macro_rules! include_files_service { /// # Ejemplos /// /// ```rust,ignore -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// pub struct MyExtension; /// /// impl Extension for MyExtension { diff --git a/src/util.rs b/src/util.rs index f73cf78..a4daf67 100644 --- a/src/util.rs +++ b/src/util.rs @@ -50,7 +50,8 @@ macro_rules! hm { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Concatena todos los fragmentos directamente. /// let result = join!("Hello", " ", "World"); /// assert_eq!(result, "Hello World".to_string()); @@ -80,7 +81,8 @@ macro_rules! join { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Concatena los fragmentos no vacíos con un espacio como separador. /// let result_with_separator = join_opt!(["Hello", "", "World"]; " "); /// assert_eq!(result_with_separator, Some("Hello World".to_string())); @@ -119,7 +121,8 @@ macro_rules! join_opt { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// let first = "Hello"; /// let separator = "-"; /// let second = "World"; @@ -161,7 +164,8 @@ macro_rules! join_pair { /// # Ejemplo /// /// ```rust -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Concatena los fragmentos. /// let result = join_strict!(["Hello", "World"]); /// assert_eq!(result, Some("HelloWorld".to_string())); @@ -207,7 +211,8 @@ macro_rules! join_strict { /// # Ejemplos /// /// ```rust,no_run -/// # use pagetop::prelude::*; +/// use pagetop::prelude::*; +/// /// // Ruta relativa, se resuelve respecto a CARGO_MANIFEST_DIR o al directorio actual (`cwd`). /// println!("{:#?}", util::resolve_absolute_dir("documents")); /// diff --git a/static/css/menu.css b/static/css/menu.css index 428ba15..6522f4a 100644 --- a/static/css/menu.css +++ b/static/css/menu.css @@ -342,11 +342,6 @@ opacity: 1; visibility: visible; } - .menu.menu--closing .menu__children { - margin-top: 0 !important; - opacity: 0 !important; - visibility: hidden !important; - } } @media (prefers-reduced-motion: reduce) { diff --git a/static/js/menu.js b/static/js/menu.js index dca8e4d..1f09bfe 100644 --- a/static/js/menu.js +++ b/static/js/menu.js @@ -1,12 +1,12 @@ -const getTitle = (li) => li.querySelector('.menu__label')?.textContent.trim() ?? ''; - function menu__showChildren(nav, children) { const li = children[0]; const submenu = li.querySelector('.menu__children'); submenu.classList.add('active'); submenu.style.animation = 'slideLeft 0.5s ease forwards'; - nav.querySelector('.menu__title').textContent = getTitle(li);; + const labelEl = li.querySelector('.menu__label'); + const title = labelEl ? labelEl.textContent.trim() : (li.querySelector('a')?.textContent?.trim() ?? ''); + nav.querySelector('.menu__title').innerHTML = title; nav.querySelector('.menu__header').classList.add('active'); } @@ -20,7 +20,9 @@ function menu__hideChildren(nav, children) { children.shift(); if (children.length > 0) { - nav.querySelector('.menu__title').textContent = getTitle(children[0]); + const a = children[0].querySelector('a'); + const title = (a && a.textContent ? a.textContent.trim() : ''); + nav.querySelector('.menu__title').textContent = title; } else { nav.querySelector('.menu__header').classList.remove('active'); nav.querySelector('.menu__title').textContent = ''; @@ -36,7 +38,7 @@ function menu__reset(menu, nav, overlay) { menu__toggle(nav, overlay); setTimeout(() => { nav.querySelector('.menu__header').classList.remove('active'); - nav.querySelector('.menu__title').textContent = ''; + nav.querySelector('.menu__title').innerHTML = ''; menu.querySelectorAll('.menu__children').forEach(submenu => { submenu.classList.remove('active'); submenu.style.removeProperty('animation'); @@ -83,13 +85,12 @@ document.querySelectorAll('.menu').forEach(menu => { menu__toggle(menuNav, menuOverlay); }); - let resizeTimeout; - window.addEventListener('resize', () => { + window.onresize = function () { if (menuNav.classList.contains('active')) { - clearTimeout(resizeTimeout); - resizeTimeout = setTimeout(() => { + var fontSizeRoot = parseFloat(getComputedStyle(document.documentElement).fontSize); + if (this.innerWidth >= 62 * fontSizeRoot) { menuChildren = menu__reset(menu, menuNav, menuOverlay); - }, 150); + } } - }); + }; });