diff --git a/modules/blox-tailwind/assets/css/components/cover.css b/modules/blox-tailwind/assets/css/components/cover.css index 19539d36..a7e2224a 100644 --- a/modules/blox-tailwind/assets/css/components/cover.css +++ b/modules/blox-tailwind/assets/css/components/cover.css @@ -14,7 +14,7 @@ /* Responsive height adjustments for mobile */ @media (max-width: 768px) { - height: 240px !important; + height: 240px; min-height: 240px; } } @@ -110,7 +110,7 @@ /* Print styles - show cover but optimize */ @media print { .article-cover { - max-height: 200px !important; + max-height: 200px; page-break-after: avoid; } @@ -125,12 +125,12 @@ .article-cover, .article-cover *, .article-cover-icon { - animation: none !important; - transition: none !important; + animation: none; + transition: none; } .article-cover.parallax img { - transform: none !important; + transform: none; } } diff --git a/modules/blox-tailwind/assets/css/framework/base.css b/modules/blox-tailwind/assets/css/framework/base.css index d666a690..7b31f1a9 100644 --- a/modules/blox-tailwind/assets/css/framework/base.css +++ b/modules/blox-tailwind/assets/css/framework/base.css @@ -98,6 +98,6 @@ .prose code:not(:where(pre *))::before, .prose code:not(:where(pre *))::after { - content: none !important; + content: none; } } diff --git a/modules/blox-tailwind/assets/js/hb-code-copy.js b/modules/blox-tailwind/assets/js/hb-code-copy.js index 9631c2ca..a4e801a6 100644 --- a/modules/blox-tailwind/assets/js/hb-code-copy.js +++ b/modules/blox-tailwind/assets/js/hb-code-copy.js @@ -61,9 +61,9 @@ async function copyCodeToClipboard(button, codeWrapper) { } catch (err) { const errorMessage = err instanceof Error ? err.message : "Unknown error"; console.error("Failed to copy:", errorMessage); - button.innerHTML = i18n["copyFailed"] || "Failed"; + button.innerHTML = i18n.copyFailed || "Failed"; setTimeout(() => { - button.innerHTML = i18n["copy"]; + button.innerHTML = i18n.copy; }, NOTIFICATION_DURATION); throw err; // Re-throw for potential error boundary handling } @@ -74,12 +74,12 @@ async function copyCodeToClipboard(button, codeWrapper) { * @param {HTMLElement} copyBtn - The copy button element */ function copiedNotification(copyBtn) { - copyBtn.innerHTML = i18n["copied"]; + copyBtn.innerHTML = i18n.copied; copyBtn.disabled = true; copyBtn.classList.add("copied"); setTimeout(() => { - copyBtn.innerHTML = i18n["copy"]; + copyBtn.innerHTML = i18n.copy; copyBtn.disabled = false; copyBtn.classList.remove("copied"); }, NOTIFICATION_DURATION); @@ -92,8 +92,8 @@ function copiedNotification(copyBtn) { function createCopyButton() { const copyBtn = document.createElement("button"); copyBtn.classList.add("copy-button"); - copyBtn.innerHTML = i18n["copy"]; - copyBtn.setAttribute("aria-label", i18n["copyLabel"] || "Copy code to clipboard"); + copyBtn.innerHTML = i18n.copy; + copyBtn.setAttribute("aria-label", i18n.copyLabel || "Copy code to clipboard"); copyBtn.setAttribute("type", "button"); // Explicit button type return copyBtn; } diff --git a/modules/blox-tailwind/assets/js/hb-mermaid-config.js b/modules/blox-tailwind/assets/js/hb-mermaid-config.js index 09b6f887..d5a0ffb0 100644 --- a/modules/blox-tailwind/assets/js/hb-mermaid-config.js +++ b/modules/blox-tailwind/assets/js/hb-mermaid-config.js @@ -1,6 +1,6 @@ function getCssVar(name) { const value = getComputedStyle(document.documentElement).getPropertyValue(name).trim(); - return value ? "rgb(" + value + ")" : null; + return value ? `rgb(${value})` : null; } window.mermaid.initialize({ diff --git a/modules/blox-tailwind/assets/js/hb-nav.js b/modules/blox-tailwind/assets/js/hb-nav.js index 9ef11457..ab02ff7a 100644 --- a/modules/blox-tailwind/assets/js/hb-nav.js +++ b/modules/blox-tailwind/assets/js/hb-nav.js @@ -3,9 +3,9 @@ const applyScrollPadding = () => { const header = document.querySelector(".page-header"); const position = header.getBoundingClientRect(); - document.documentElement.style.scrollPaddingTop = position.height.toString() + "px"; + document.documentElement.style.scrollPaddingTop = `${position.height.toString()}px`; const r = document.querySelector(":root"); - r.style.setProperty("--navbar-height", position.height.toString() + "px"); + r.style.setProperty("--navbar-height", `${position.height.toString()}px`); }; window.addEventListener("DOMContentLoaded", () => { diff --git a/poetry.lock b/poetry.lock index dd609e14..2d63e434 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "certifi" @@ -6,6 +6,7 @@ version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, @@ -17,6 +18,7 @@ version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" +groups = ["main"] files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, @@ -116,17 +118,36 @@ version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" +groups = ["main"] files = [ {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] +[[package]] +name = "plotext" +version = "5.3.2" +description = "plotext plots directly on terminal" +optional = false +python-versions = ">=3.5" +groups = ["main"] +files = [ + {file = "plotext-5.3.2-py3-none-any.whl", hash = "sha256:394362349c1ddbf319548cfac17ca65e6d5dfc03200c40dfdc0503b3e95a2283"}, + {file = "plotext-5.3.2.tar.gz", hash = "sha256:52d1e932e67c177bf357a3f0fe6ce14d1a96f7f7d5679d7b455b929df517068e"}, +] + +[package.extras] +completion = ["shtab"] +image = ["pillow (>=8.4)"] +video = ["ffpyplayer (>=4.3.5)", "opencv-python (>=4.5.5)", "pafy (>=0.5.5)", "pillow (>=8.4)", "youtube-dl (==2020.12.2)"] + [[package]] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, @@ -186,6 +207,7 @@ version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -207,6 +229,7 @@ version = "0.18.6" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "ruamel.yaml-0.18.6-py3-none-any.whl", hash = "sha256:57b53ba33def16c4f3d807c0ccbc00f8a6081827e81ba2491691b76882d0c636"}, {file = "ruamel.yaml-0.18.6.tar.gz", hash = "sha256:8b27e6a217e786c6fbe5634d8f3f11bc63e0f80f6a5890f28863d9c45aac311b"}, @@ -225,6 +248,8 @@ version = "0.2.8" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" optional = false python-versions = ">=3.6" +groups = ["main"] +markers = "platform_python_implementation == \"CPython\" and python_version == \"3.12\"" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, @@ -284,6 +309,7 @@ version = "0.12.3" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, @@ -295,18 +321,19 @@ version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = "^3.12" -content-hash = "a05cd3147e78a0a63370971b3295d1e7d5d40f79cccc73f0d9aa03dfbe52501b" +content-hash = "0e39482beb4a24a34de066231388786495c7831161ecf30125f024d8a2259c75" diff --git a/pyproject.toml b/pyproject.toml index 450526c1..a0487995 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,6 +13,7 @@ requests = "^2.31.0" pyyaml = "^6.0.1" ruamel-yaml = "^0.18.6" tomlkit = "^0.12.3" +plotext = "^5.2.8" [build-system] requires = ["poetry-core"]