diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b16256..d6b375c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,41 +14,23 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 + - name: Setup Python + uses: actions/setup-python@v5 with: - ruby-version: "3.3" - bundler-cache: true + python-version: "3.12" + cache: pip - - name: Build Jekyll - run: bundle exec jekyll build --baseurl "" - env: - JEKYLL_ENV: production + - name: Install dependencies + run: pip install -r requirements.txt - - name: Check for broken internal links - run: | - echo "Checking for broken internal links..." - ERRORS=0 - for link in $(grep -roh 'href="/[^"]*"' _site/ --include="*.html" | sed 's/href="//;s/"$//' | sort -u); do - CLEAN_LINK=$(echo "$link" | sed 's/#.*//' | sed 's|/$||') - if [ -z "$CLEAN_LINK" ]; then continue; fi - if [ ! -f "_site${CLEAN_LINK}.html" ] && [ ! -f "_site${CLEAN_LINK}/index.html" ] && [ ! -f "_site${CLEAN_LINK}" ]; then - echo "::warning::Broken link: $link" - ERRORS=$((ERRORS + 1)) - fi - done - if [ "$ERRORS" -gt 0 ]; then - echo "::warning::Found $ERRORS potentially broken internal links" - else - echo "All internal links valid." - fi + - name: Build MkDocs (strict) + run: mkdocs build --strict - - name: Validate HTML structure + - name: Validate output run: | - echo "Checking generated HTML files..." - HTML_COUNT=$(find _site -name "*.html" | wc -l) + HTML_COUNT=$(find site -name "*.html" | wc -l) echo "Generated $HTML_COUNT HTML files" if [ "$HTML_COUNT" -eq 0 ]; then - echo "::error::No HTML files generated — build may have failed silently" + echo "::error::No HTML files generated" exit 1 fi diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8a0a0a0..28f9997 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -24,33 +24,22 @@ jobs: - name: Setup Pages uses: actions/configure-pages@v5 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 + - name: Setup Python + uses: actions/setup-python@v5 with: - ruby-version: "3.3" - bundler-cache: true + python-version: "3.12" + cache: pip - - name: Build Jekyll - run: bundle exec jekyll build --baseurl "" - env: - JEKYLL_ENV: production + - name: Install dependencies + run: pip install -r requirements.txt - - name: Verify no inline scripts in output - run: | - echo "Checking for inline script injection in generated HTML..." - FOUND=$(grep -rn ']*>[^<]' _site/ --include="*.html" \ - | grep -v 'src=' \ - | grep -v 'jtd.onReady' \ - | grep -v 'initSearch' \ - | grep -v '"baseurl"' \ - || true) - if [ -n "$FOUND" ]; then - echo "::warning::Unexpected inline scripts detected in generated HTML:" - echo "$FOUND" - fi + - name: Build MkDocs + run: mkdocs build --strict - name: Upload artifact uses: actions/upload-pages-artifact@v3 + with: + path: site/ deploy: environment: diff --git a/Gemfile b/Gemfile deleted file mode 100644 index d96f24f..0000000 --- a/Gemfile +++ /dev/null @@ -1,9 +0,0 @@ -source "https://rubygems.org" - -gem "jekyll", "~> 4.3" -gem "just-the-docs", "~> 0.10.0" -gem "webrick", "~> 1.8" - -group :jekyll_plugins do - gem "jekyll-seo-tag", "~> 2.8" -end diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 175b3a0..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,247 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.9) - public_suffix (>= 2.0.2, < 8.0) - base64 (0.3.0) - bigdecimal (4.1.0) - colorator (1.1.0) - concurrent-ruby (1.3.6) - csv (3.3.5) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.17.4) - ffi (1.17.4-aarch64-linux-gnu) - ffi (1.17.4-aarch64-linux-musl) - ffi (1.17.4-arm-linux-gnu) - ffi (1.17.4-arm-linux-musl) - ffi (1.17.4-arm64-darwin) - ffi (1.17.4-x86-linux-gnu) - ffi (1.17.4-x86-linux-musl) - ffi (1.17.4-x86_64-darwin) - ffi (1.17.4-x86_64-linux-gnu) - ffi (1.17.4-x86_64-linux-musl) - forwardable-extended (2.6.0) - google-protobuf (4.34.1) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-aarch64-linux-gnu) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-aarch64-linux-musl) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-arm64-darwin) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-x86-linux-gnu) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-x86-linux-musl) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-x86_64-darwin) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-x86_64-linux-gnu) - bigdecimal - rake (~> 13.3) - google-protobuf (4.34.1-x86_64-linux-musl) - bigdecimal - rake (~> 13.3) - http_parser.rb (0.8.1) - i18n (1.14.8) - concurrent-ruby (~> 1.0) - jekyll (4.4.1) - addressable (~> 2.4) - base64 (~> 0.2) - colorator (~> 1.0) - csv (~> 3.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - json (~> 2.6) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (~> 0.3, >= 0.3.6) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-include-cache (0.2.1) - jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (3.1.0) - sass-embedded (~> 1.75) - jekyll-seo-tag (2.8.0) - jekyll (>= 3.8, < 5.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - json (2.19.3) - just-the-docs (0.10.2) - jekyll (>= 3.8.5) - jekyll-include-cache - jekyll-seo-tag (>= 2.0) - rake (>= 12.3.1) - kramdown (2.5.2) - rexml (>= 3.4.4) - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.4) - listen (3.10.0) - logger - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - logger (1.7.0) - mercenary (0.4.0) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (7.0.5) - rake (13.3.1) - rb-fsevent (0.11.2) - rb-inotify (0.11.1) - ffi (~> 1.0) - rexml (3.4.4) - rouge (4.7.0) - safe_yaml (1.0.5) - sass-embedded (1.98.0) - google-protobuf (~> 4.31) - rake (>= 13) - sass-embedded (1.98.0-aarch64-linux-android) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-aarch64-linux-gnu) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-aarch64-linux-musl) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-arm-linux-androideabi) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-arm-linux-gnueabihf) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-arm-linux-musleabihf) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-arm64-darwin) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-riscv64-linux-android) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-riscv64-linux-gnu) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-riscv64-linux-musl) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-x86_64-darwin) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-x86_64-linux-android) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-x86_64-linux-gnu) - google-protobuf (~> 4.31) - sass-embedded (1.98.0-x86_64-linux-musl) - google-protobuf (~> 4.31) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.6.0) - webrick (1.9.2) - -PLATFORMS - aarch64-linux-android - aarch64-linux-gnu - aarch64-linux-musl - arm-linux-androideabi - arm-linux-gnu - arm-linux-gnueabihf - arm-linux-musl - arm-linux-musleabihf - arm64-darwin - riscv64-linux-android - riscv64-linux-gnu - riscv64-linux-musl - ruby - x86-linux-gnu - x86-linux-musl - x86_64-darwin - x86_64-linux-android - x86_64-linux-gnu - x86_64-linux-musl - -DEPENDENCIES - jekyll (~> 4.3) - jekyll-seo-tag (~> 2.8) - just-the-docs (~> 0.10.0) - webrick (~> 1.8) - -CHECKSUMS - addressable (2.8.9) sha256=cc154fcbe689711808a43601dee7b980238ce54368d23e127421753e46895485 - base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b - bigdecimal (4.1.0) sha256=6dc07767aa3dc456ccd48e7ae70a07b474e9afd7c5bc576f80bd6da5c8dd6cae - colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38 - concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab - csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f - em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8 - eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972 - ffi (1.17.4) sha256=bcd1642e06f0d16fc9e09ac6d49c3a7298b9789bcb58127302f934e437d60acf - ffi (1.17.4-aarch64-linux-gnu) sha256=b208f06f91ffd8f5e1193da3cae3d2ccfc27fc36fba577baf698d26d91c080df - ffi (1.17.4-aarch64-linux-musl) sha256=9286b7a615f2676245283aef0a0a3b475ae3aae2bb5448baace630bb77b91f39 - ffi (1.17.4-arm-linux-gnu) sha256=d6dbddf7cb77bf955411af5f187a65b8cd378cb003c15c05697f5feee1cb1564 - ffi (1.17.4-arm-linux-musl) sha256=9d4838ded0465bef6e2426935f6bcc93134b6616785a84ffd2a3d82bc3cf6f95 - ffi (1.17.4-arm64-darwin) sha256=19071aaf1419251b0a46852abf960e77330a3b334d13a4ab51d58b31a937001b - ffi (1.17.4-x86-linux-gnu) sha256=38e150df5f4ca555e25beca4090823ae09657bceded154e3c52f8631c1ed72cf - ffi (1.17.4-x86-linux-musl) sha256=fbeec0fc7c795bcf86f623bb18d31ea1820f7bd580e1703a3d3740d527437809 - ffi (1.17.4-x86_64-darwin) sha256=aa70390523cf3235096cf64962b709b4cfbd5c082a2cb2ae714eb0fe2ccda496 - ffi (1.17.4-x86_64-linux-gnu) sha256=9d3db14c2eae074b382fa9c083fe95aec6e0a1451da249eab096c34002bc752d - ffi (1.17.4-x86_64-linux-musl) sha256=3fdf9888483de005f8ef8d1cf2d3b20d86626af206cbf780f6a6a12439a9c49e - forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97 - google-protobuf (4.34.1) sha256=347181542b8d659c60f028fa3791c9cccce651a91ad27782dbc5c5e374796cdc - google-protobuf (4.34.1-aarch64-linux-gnu) sha256=f9c07607dc139c895f2792a7740fcd01cd94d4d7b0e0a939045b50d7999f0b1d - google-protobuf (4.34.1-aarch64-linux-musl) sha256=db58e5a4a492b43c6614486aea31b7fb86955b175d1d48f28ebf388f058d78a9 - google-protobuf (4.34.1-arm64-darwin) sha256=2745061f973119e6e7f3c81a0c77025d291a3caa6585a2cd24a25bbc7bedb267 - google-protobuf (4.34.1-x86-linux-gnu) sha256=b6da7891fe96b13038e5435d8ac8b8a84d78a468147a48a377fe8da40aba1c88 - google-protobuf (4.34.1-x86-linux-musl) sha256=ea0f453e78f4c30d0d9dbaa8cf9b33d2a1ea04ab2cad2c2a07e479411c05f1a9 - google-protobuf (4.34.1-x86_64-darwin) sha256=4dc498376e218871613589c4d872400d42ad9ae0c700bdb2606fe1c77a593075 - google-protobuf (4.34.1-x86_64-linux-gnu) sha256=87088c9fd8e47b5b40ca498fc1195add6149e941ff7e81c532a5b0b8876d4cc9 - google-protobuf (4.34.1-x86_64-linux-musl) sha256=8c0e91436fbe504ffc64f0bd621f2e69adbcce8ed2c58439d7a21117069cfdd7 - http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a - i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 - jekyll (4.4.1) sha256=4c1144d857a5b2b80d45b8cf5138289579a9f8136aadfa6dd684b31fe2bc18c1 - jekyll-include-cache (0.2.1) sha256=c7d4b9e551732a27442cb2ce853ba36a2f69c66603694b8c1184c99ab1a1a205 - jekyll-sass-converter (3.1.0) sha256=83925d84f1d134410c11d0c6643b0093e82e3a3cf127e90757a85294a3862443 - jekyll-seo-tag (2.8.0) sha256=3f2ed1916d56f14ebfa38e24acde9b7c946df70cb183af2cb5f0598f21ae6818 - jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1 - json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646 - just-the-docs (0.10.2) sha256=63b295492906cc6b3e4ab10ceed19a4afea833b11ac06e0af28969058e15e5fe - kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa - kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 - liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3 - listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2 - logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - mercenary (0.4.0) sha256=b25a1e4a59adca88665e08e24acf0af30da5b5d859f7d8f38fba52c28f405138 - pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 - public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623 - rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c - rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe - rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e - rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 - rouge (4.7.0) sha256=dba5896715c0325c362e895460a6d350803dbf6427454f49a47500f3193ea739 - safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848 - sass-embedded (1.98.0) sha256=397dcd0071170f079eb97562a035fa113358af10e3ff759a57bc7eef763e9f94 - sass-embedded (1.98.0-aarch64-linux-android) sha256=bdc2c0e7473f569e53342adb7d7abc9349083bd8181e053a356218063ae09a32 - sass-embedded (1.98.0-aarch64-linux-gnu) sha256=019baa4ee850f9d6f3f53125fd4ee56b13ea5191bc8f8f9436825ec3e171b02d - sass-embedded (1.98.0-aarch64-linux-musl) sha256=9f4defd3cddf0bbf129f0b6ad8af966bdb90e36ab162f49a5b9f1baaf3339af1 - sass-embedded (1.98.0-arm-linux-androideabi) sha256=eb3346f36ce6c378821bc422f0edda03cef03208e47b2a9d8e62330ed08e1361 - sass-embedded (1.98.0-arm-linux-gnueabihf) sha256=763277f4070caccd6fcbcf4c54249539effe78c36850617922834a8eb72177d7 - sass-embedded (1.98.0-arm-linux-musleabihf) sha256=7e21e46569f5cc47d5d04d77c73e4bdb08547304e2ed0ff6b9a83d608c0d9a2b - sass-embedded (1.98.0-arm64-darwin) sha256=fed4ee6de2f30b14e7a678ca648730aa78acc86be7a555e16ba3fdbc5e6aca69 - sass-embedded (1.98.0-riscv64-linux-android) sha256=6fee03d351e6eb3ffe3168702a3b045e56f7e4d435c98368e6e5ccb621eefbae - sass-embedded (1.98.0-riscv64-linux-gnu) sha256=5ca86012b061d63f1e37a7afab507b619f0928554d2cae126b259a093c2530b0 - sass-embedded (1.98.0-riscv64-linux-musl) sha256=a28c0ec5318b515999e0db03a1e4eca54ff77c35b81df453ebe335c053ae6b30 - sass-embedded (1.98.0-x86_64-darwin) sha256=a0b5b64f0157e2f1d713ac5ea75474c8507c464f0923090094471c33d4244484 - sass-embedded (1.98.0-x86_64-linux-android) sha256=830e2c120001bdd5e2dea29e2b803c3c1481bfacc7d93cf676f63c4454f06b2b - sass-embedded (1.98.0-x86_64-linux-gnu) sha256=36b72021e00cfdd91ccb9eb490cff6addc376424cf9c2786f01392c8d0f0d4a0 - sass-embedded (1.98.0-x86_64-linux-musl) sha256=8f66a2db9bb1efd95df340e4157be3803be8b22b5f2f5280d9387553fcb9584a - terminal-table (3.0.2) sha256=f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91 - unicode-display_width (2.6.0) sha256=12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a - webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131 - -BUNDLED WITH - 4.0.8 diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 55c9e6b..0000000 --- a/_config.yml +++ /dev/null @@ -1,82 +0,0 @@ -title: DistTopic -description: >- - Open source tools for game development — building cross-platform editors - and servers for the Tibia community. -url: "https://disttopic.github.io" -baseurl: "" - -theme: just-the-docs - -color_scheme: disttopic-dark - -# Logos -logo: "/assets/images/logo.svg" - -# Aux links (top-right) -aux_links: - GitHub: "https://github.com/DistTopic" -aux_links_new_tab: true - -# Navigation -nav_sort: case_insensitive -nav_enabled: true -nav_external_links: - - title: Assets And Map Editor - url: https://github.com/DistTopic/assets-and-map-editor - -# Heading anchor links -heading_anchors: true - -# Search -search_enabled: true -search: - heading_level: 3 - previews: 3 - preview_words_before: 5 - preview_words_after: 10 - tokenizer_separator: /[\s/]+/ - rel_url: true - button: false - -# "Edit this page" on every page -gh_edit_link: true -gh_edit_link_text: "Edit this page on GitHub" -gh_edit_repository: "https://github.com/DistTopic/disttopic.github.io" -gh_edit_branch: "main" -gh_edit_source: "/" -gh_edit_view_mode: "edit" - -# Footer -footer_content: >- - © 2026 DistTopic — Licensed under - MIT. - Built with Just the Docs. - -# Back to top link -back_to_top: true -back_to_top_text: "Back to top" - -# Build settings -markdown: kramdown -kramdown: - input: GFM - hard_wrap: false - syntax_highlighter: rouge - -plugins: - - jekyll-seo-tag - -# Exclude from build -exclude: - - .github/ - - .gitignore - - Gemfile - - Gemfile.lock - - LICENSE - - README.md - - CONTRIBUTING.md - - CODE_OF_CONDUCT.md - - SECURITY.md - - vendor/ - - node_modules/ - - "*.py" diff --git a/_includes/head_custom.html b/_includes/head_custom.html deleted file mode 100644 index 065ebaf..0000000 --- a/_includes/head_custom.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/_sass/color_schemes/disttopic-dark.scss b/_sass/color_schemes/disttopic-dark.scss deleted file mode 100644 index 3dcb01e..0000000 --- a/_sass/color_schemes/disttopic-dark.scss +++ /dev/null @@ -1,52 +0,0 @@ -@charset "UTF-8"; - -// DistTopic Dark — Catppuccin Mocha-inspired color scheme -// Used by just-the-docs via `color_scheme: disttopic-dark` in _config.yml - -// Catppuccin Mocha palette -$ctp-rosewater: #f5e0dc; -$ctp-flamingo: #f2cdcd; -$ctp-pink: #f5c2e7; -$ctp-mauve: #cba6f7; -$ctp-red: #f38ba8; -$ctp-maroon: #eba0ac; -$ctp-peach: #fab387; -$ctp-yellow: #f9e2af; -$ctp-green: #a6e3a1; -$ctp-teal: #94e2d5; -$ctp-sky: #89dceb; -$ctp-sapphire: #74c7ec; -$ctp-blue: #89b4fa; -$ctp-lavender: #b4befe; -$ctp-text: #cdd6f4; -$ctp-subtext1: #bac2de; -$ctp-subtext0: #a6adc8; -$ctp-overlay2: #9399b2; -$ctp-overlay1: #7f849c; -$ctp-overlay0: #6c7086; -$ctp-surface2: #585b70; -$ctp-surface1: #45475a; -$ctp-surface0: #313244; -$ctp-base: #1e1e2e; -$ctp-mantle: #181825; -$ctp-crust: #11111b; - -// Typography -$body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif; -$mono-font-family: "SF Mono", ui-monospace, "Cascadia Code", SFMono-Regular, Menlo, Consolas, monospace; -$root-font-size: 16px; -$body-line-height: 1.75; - -// just-the-docs color scheme override -$body-background-color: $ctp-base; -$sidebar-color: $ctp-mantle; -$body-text-color: $ctp-text; -$body-heading-color: $ctp-lavender; -$nav-child-link-color: $ctp-subtext0; -$link-color: $ctp-blue; -$btn-primary-color: $ctp-mauve; -$code-background-color: $ctp-surface0; -$search-background-color: $ctp-surface0; -$table-background-color: $ctp-surface0; -$feedback-color: $ctp-overlay0; -$border-color: $ctp-surface1; diff --git a/assets/css/custom.css b/assets/css/custom.css deleted file mode 100644 index 00e3dc1..0000000 --- a/assets/css/custom.css +++ /dev/null @@ -1,304 +0,0 @@ -/* ================================================================ - DistTopic — Modern UI Overrides - Applied on top of Just the Docs (theme: just-the-docs) - Color palette: Catppuccin Mocha - ================================================================ */ - -/* ── CSS Custom Properties ──────────────────────────────────────── */ -:root { - --dt-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", - "Segoe UI", system-ui, "Helvetica Neue", Arial, sans-serif; - --dt-font-mono: "SF Mono", ui-monospace, "Cascadia Code", "Fira Code", - SFMono-Regular, Menlo, Consolas, monospace; - - /* Catppuccin Mocha */ - --ctp-base: #1e1e2e; - --ctp-mantle: #181825; - --ctp-crust: #11111b; - --ctp-surface0: #313244; - --ctp-surface1: #45475a; - --ctp-surface2: #585b70; - --ctp-overlay0: #6c7086; - --ctp-overlay1: #7f849c; - --ctp-text: #cdd6f4; - --ctp-subtext0: #a6adc8; - --ctp-subtext1: #bac2de; - --ctp-blue: #89b4fa; - --ctp-lavender: #b4befe; - --ctp-mauve: #cba6f7; - --ctp-green: #a6e3a1; - --ctp-teal: #94e2d5; - --ctp-sky: #89dceb; - --ctp-peach: #fab387; - --ctp-red: #f38ba8; - --ctp-yellow: #f9e2af; -} - -/* ── Base ─────────────────────────────────────────────────────── */ -html { scroll-behavior: smooth; } - -body { - font-family: var(--dt-font-sans); - font-size: 16px; - line-height: 1.75; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-rendering: optimizeLegibility; -} - -/* ── Typography ──────────────────────────────────────────────── */ -h1, h2, h3, h4, h5, h6 { - font-family: var(--dt-font-sans); - font-weight: 700; - letter-spacing: -0.025em; - line-height: 1.3; -} - -/* Hero gradient heading (fs-9 on homepage) */ -.fs-9 { - font-size: clamp(2rem, 5vw, 3.25rem) !important; - font-weight: 800 !important; - letter-spacing: -0.04em !important; - line-height: 1.1 !important; - background: linear-gradient( - 135deg, - var(--ctp-lavender) 0%, - var(--ctp-blue) 50%, - var(--ctp-teal) 100% - ); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; - margin-bottom: 0.25rem !important; -} - -.fs-6.fw-300 { - font-size: 1.15rem !important; - font-weight: 400 !important; - color: var(--ctp-subtext1) !important; - line-height: 1.6 !important; - margin-top: 0.75rem !important; - margin-bottom: 1.5rem !important; -} - -/* ── Links ────────────────────────────────────────────────────── */ -a { - transition: color 0.15s ease, opacity 0.15s ease; - text-decoration-thickness: 1px; - text-underline-offset: 3px; -} -.main-content a:hover { opacity: 0.8; } - -/* ── Code & Monospace ─────────────────────────────────────────── */ -code, pre, kbd, samp { - font-family: var(--dt-font-mono) !important; - font-size: 0.875em; -} - -/* Code blocks — rounded card look */ -div.highlighter-rouge, -figure.highlight { - border-radius: 10px !important; - border: 1px solid var(--ctp-surface1) !important; - overflow: hidden; - margin: 1.25rem 0 !important; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.25); -} - -pre.highlight { - padding: 1.25rem 1.5rem !important; - border-radius: 0 !important; - border: none !important; - margin: 0 !important; - line-height: 1.6; -} - -/* Inline code */ -p code.highlighter-rouge, -li code.highlighter-rouge, -td code.highlighter-rouge, -h1 code, h2 code, h3 code { - border-radius: 5px !important; - padding: 0.15em 0.45em !important; - font-size: 0.82em !important; - border: 1px solid var(--ctp-surface1) !important; -} - -/* ── Tables ───────────────────────────────────────────────────── */ -.main-content table { - border-radius: 10px; - overflow: hidden; - border: 1px solid var(--ctp-surface1) !important; - border-collapse: separate !important; - border-spacing: 0 !important; - width: 100%; - margin: 1.5rem 0; - font-size: 0.9rem; - box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2); -} - -.main-content th { - background: var(--ctp-mantle) !important; - font-weight: 700; - font-size: 0.73rem !important; - text-transform: uppercase !important; - letter-spacing: 0.07em !important; - padding: 0.75rem 1.1rem !important; - color: var(--ctp-subtext1) !important; - border-bottom: 1px solid var(--ctp-surface1) !important; -} - -.main-content td { - padding: 0.7rem 1.1rem !important; - border-bottom: 1px solid var(--ctp-surface0) !important; - vertical-align: middle; -} - -.main-content tr:last-child td { border-bottom: none !important; } - -.main-content tbody tr { - transition: background-color 0.1s ease; -} -.main-content tbody tr:hover td { - background: rgba(137, 180, 250, 0.05) !important; -} - -/* ── Buttons ──────────────────────────────────────────────────── */ -.btn { - border-radius: 8px !important; - font-family: var(--dt-font-sans) !important; - font-weight: 600 !important; - font-size: 0.875rem !important; - letter-spacing: 0.01em; - padding: 0.5rem 1.1rem !important; - transition: all 0.15s ease !important; -} - -.btn-primary { - background: linear-gradient( - 135deg, - var(--ctp-mauve) 0%, - var(--ctp-blue) 100% - ) !important; - border-color: transparent !important; - color: var(--ctp-crust) !important; -} - -.btn-primary:hover { - transform: translateY(-2px) !important; - box-shadow: 0 6px 20px rgba(137, 180, 250, 0.35) !important; - opacity: 1 !important; -} - -.btn:not(.btn-primary):hover { - border-color: var(--ctp-blue) !important; - color: var(--ctp-blue) !important; - transform: translateY(-1px) !important; -} - -/* ── Navigation ───────────────────────────────────────────────── */ -.nav-list .nav-list-item .nav-list-link { - border-radius: 6px !important; - font-size: 0.875rem; - transition: background-color 0.1s ease, color 0.1s ease; - padding: 0.3rem 0.6rem !important; -} - -/* ── Sidebar ──────────────────────────────────────────────────── */ -.side-bar { - border-right: 1px solid var(--ctp-surface0) !important; -} - -.site-title { - font-weight: 800 !important; - font-size: 1.05rem !important; - letter-spacing: -0.025em !important; -} - -/* ── Main content ─────────────────────────────────────────────── */ -.main-content h1 { margin-top: 0; } - -.main-content h2 { - padding-top: 1.5rem; - border-top: 1px solid var(--ctp-surface0); - margin-top: 2.5rem; -} - -/* ── HR ───────────────────────────────────────────────────────── */ -.main-content hr { - border: none !important; - border-top: 1px solid var(--ctp-surface1) !important; - margin: 2.5rem 0 !important; -} - -/* ── Blockquotes / Callouts ───────────────────────────────────── */ -.main-content blockquote { - border-radius: 8px; - border-left: 3px solid var(--ctp-blue); - background: rgba(137, 180, 250, 0.07); - padding: 0.9rem 1.25rem; - margin: 1.5rem 0; - color: var(--ctp-subtext1); -} - -/* just-the-docs callout modifiers */ -.main-content blockquote.note { border-left-color: var(--ctp-blue); background: rgba(137,180,250,0.07); } -.main-content blockquote.warning { border-left-color: var(--ctp-yellow); background: rgba(249,226,175,0.07); } -.main-content blockquote.important{ border-left-color: var(--ctp-mauve); background: rgba(203,166,247,0.07); } - -/* ── Labels ───────────────────────────────────────────────────── */ -.label, .label-green, .label-yellow, .label-red, .label-blue, .label-purple { - border-radius: 5px !important; - font-size: 0.7rem !important; - font-weight: 700 !important; - letter-spacing: 0.06em !important; - padding: 0.2em 0.6em !important; - text-transform: uppercase !important; -} - -/* ── Search ───────────────────────────────────────────────────── */ -.search-input { - border-radius: 8px !important; - font-family: var(--dt-font-sans) !important; - font-size: 0.9rem; - transition: border-color 0.15s ease, box-shadow 0.15s ease !important; -} - -.search-input:focus { - border-color: var(--ctp-blue) !important; - box-shadow: 0 0 0 3px rgba(137, 180, 250, 0.15) !important; - outline: none !important; -} - -/* ── Breadcrumbs ──────────────────────────────────────────────── */ -.breadcrumb-nav-list-item { - font-size: 0.8rem !important; -} - -/* ── Footer ───────────────────────────────────────────────────── */ -.site-footer { - border-top: 1px solid var(--ctp-surface0) !important; - font-size: 0.825rem !important; - color: var(--ctp-overlay1) !important; -} - -.site-footer a { - color: var(--ctp-blue) !important; -} - -/* ── Top nav bar ──────────────────────────────────────────────── */ -.main-header { - border-bottom: 1px solid var(--ctp-surface0) !important; - box-shadow: 0 1px 0 var(--ctp-surface0) !important; -} - -/* ── Badges/images ────────────────────────────────────────────── */ -.main-content img { - border-radius: 4px; -} - -/* ── Page content spacing ─────────────────────────────────────── */ -.main-content { - font-size: 1rem; - padding-top: 1.5rem; -} diff --git a/about.md b/docs/about.md similarity index 66% rename from about.md rename to docs/about.md index 56bba35..f936e00 100644 --- a/about.md +++ b/docs/about.md @@ -1,18 +1,11 @@ --- title: About -layout: default -nav_order: 4 -description: "About the DistTopic organization." -permalink: /about +description: About the DistTopic organization. --- # About DistTopic -{: .fs-8 } We are an open source organization building tools for the Tibia game development community. -{: .fs-5 .fw-300 } - ---- ## Mission @@ -21,8 +14,8 @@ DistTopic exists to create **high-quality, cross-platform, open source tools** t We believe in: - **Transparency** — All source code is public and auditable -- **Security** — Verified builds with SHA-256 checksums, security scanning via CodeQL -- **Accessibility** — Tools that run on every major operating system +- **Security** — Verified builds with SHA-256 checksums, automated CodeQL scanning +- **Accessibility** — Tools that run on every major operating system without installation - **Community** — Inner source practices that welcome contributors at every skill level ## Projects @@ -33,15 +26,16 @@ We believe in: ## Technology -Our projects use modern, well-supported technologies: - -- **.NET 10 LTS** — Long-term support runtime -- **Avalonia UI 11** — Cross-platform UI framework -- **GitHub Actions** — CI/CD for builds, testing, and security scanning -- **CodeQL** — Automated vulnerability detection +| Technology | Purpose | +|-----------|---------| +| .NET 10 LTS | Long-term support runtime | +| Avalonia UI 11 | Cross-platform UI framework | +| C# 13 | Language | +| GitHub Actions | CI/CD for builds, testing, and security scanning | +| CodeQL | Automated vulnerability detection | ## Contact - **GitHub**: [github.com/DistTopic](https://github.com/DistTopic) - **Issues**: Use the issue tracker on each project repository -- **Security**: Report vulnerabilities via [GitHub Security Advisories](https://github.com/DistTopic/assets-and-map-editor/security/advisories/new) +- **Security**: Report vulnerabilities via [GitHub Security Advisories](https://github.com/DistTopic/assets-and-map-editor/security/advisories/new) — do not open public issues diff --git a/docs/assets/css/github-dark.css b/docs/assets/css/github-dark.css new file mode 100644 index 0000000..1ce9e39 --- /dev/null +++ b/docs/assets/css/github-dark.css @@ -0,0 +1,501 @@ +/* ================================================================ + DistTopic — GitHub Dark theme for MkDocs Material + Based on GitHub's Primer color system + ================================================================ */ + +/* ── System font stack (GitHub's exact stack) ─────────────────── */ +:root { + --gh-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", + Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; + --gh-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, + "Liberation Mono", monospace; + + /* GitHub Dark canvas */ + --gh-canvas: #0d1117; + --gh-canvas-subtle: #161b22; + --gh-canvas-inset: #010409; + --gh-border: #30363d; + --gh-border-muted: #21262d; + + /* GitHub Dark foreground */ + --gh-fg: #e6edf3; + --gh-fg-muted: #8b949e; + --gh-fg-subtle: #6e7681; + + /* GitHub accents */ + --gh-blue: #2f81f7; + --gh-blue-muted: rgba(47, 129, 247, 0.15); + --gh-green: #3fb950; + --gh-orange: #d29922; + --gh-red: #f85149; + --gh-purple: #bc8cff; +} + +/* ── Material color variable overrides ────────────────────────── */ +:root, +[data-md-color-scheme="slate"] { + --md-default-bg-color: var(--gh-canvas); + --md-default-fg-color: var(--gh-fg); + --md-default-fg-color--light: var(--gh-fg-muted); + --md-default-fg-color--lighter: var(--gh-fg-subtle); + --md-default-fg-color--lightest: rgba(110, 118, 129, 0.38); + + --md-typeset-color: var(--gh-fg); + --md-typeset-a-color: var(--gh-blue); + + --md-code-bg-color: var(--gh-canvas-subtle); + --md-code-fg-color: var(--gh-fg); + --md-code-hl-color: rgba(47, 129, 247, 0.15); + + /* GitHub-style code syntax */ + --md-code-hl-keyword-color: #ff7b72; + --md-code-hl-name-color: var(--gh-fg); + --md-code-hl-comment-color: var(--gh-fg-muted); + --md-code-hl-string-color: #a5d6ff; + --md-code-hl-number-color: #79c0ff; + --md-code-hl-function-color: #d2a8ff; + --md-code-hl-operator-color: #ff7b72; + --md-code-hl-punctuation-color: var(--gh-fg); + --md-code-hl-constant-color: #79c0ff; + --md-code-hl-special-color: #ffa657; + + --md-shadow-z1: 0 1px 0 rgba(48, 54, 61, 0.5); + --md-shadow-z2: 0 4px 10px rgba(1, 4, 9, 0.3); + --md-shadow-z3: 0 8px 24px rgba(1, 4, 9, 0.4); +} + +[data-md-color-primary="custom"] { + --md-primary-fg-color: var(--gh-fg); + --md-primary-fg-color--light: var(--gh-fg-muted); + --md-primary-fg-color--dark: var(--gh-fg); + --md-primary-bg-color: var(--gh-canvas-subtle); + --md-primary-bg-color--light: rgba(22, 27, 34, 0.54); +} + +[data-md-color-accent="custom"] { + --md-accent-fg-color: var(--gh-blue); + --md-accent-fg-color--transparent: var(--gh-blue-muted); + --md-accent-bg-color: var(--gh-canvas); + --md-accent-bg-color--light: var(--gh-blue-muted); +} + +/* ── Base typography ──────────────────────────────────────────── */ +body, +.md-typeset { + font-family: var(--gh-font-sans) !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-rendering: optimizeLegibility; +} + +.md-typeset { + font-size: 0.9375rem; /* 15px */ + line-height: 1.75; + color: var(--gh-fg); +} + +code, pre, kbd, samp, +.md-typeset code, +.md-typeset pre { + font-family: var(--gh-font-mono) !important; +} + +.md-typeset h1, +.md-typeset h2, +.md-typeset h3, +.md-typeset h4 { + font-weight: 600; + letter-spacing: -0.025em; + color: var(--gh-fg); +} + +.md-typeset h1 { font-size: 2rem; line-height: 1.25; } +.md-typeset h2 { + font-size: 1.375rem; + padding-bottom: 0.4rem; + border-bottom: 1px solid var(--gh-border-muted); + margin-top: 2rem; +} +.md-typeset h3 { font-size: 1.125rem; } + +/* ── Header ───────────────────────────────────────────────────── */ +.md-header { + background-color: var(--gh-canvas-subtle) !important; + border-bottom: 1px solid var(--gh-border) !important; + box-shadow: none !important; +} + +.md-header__title { + font-weight: 600; + letter-spacing: -0.015em; +} + +/* Site name / logo area */ +.md-header__button.md-logo img, +.md-header__button.md-logo svg { + height: 1.5rem; + width: auto; +} + +/* ── Navigation tabs ──────────────────────────────────────────── */ +.md-tabs { + background-color: var(--gh-canvas-subtle) !important; + border-bottom: 1px solid var(--gh-border) !important; +} + +.md-tabs__item { + height: 2.5rem; +} + +.md-tabs__link { + font-size: 0.875rem; + font-weight: 500; + color: var(--gh-fg-muted) !important; + opacity: 1 !important; + transition: color 0.15s ease; +} + +.md-tabs__link:hover, +.md-tabs__link--active { + color: var(--gh-fg) !important; +} + +.md-tabs__link--active { + border-bottom: 2px solid var(--gh-blue); +} + +/* ── Sidebar ──────────────────────────────────────────────────── */ +.md-sidebar { + background-color: var(--gh-canvas) !important; +} + +.md-sidebar__scrollwrap { + scrollbar-width: thin; + scrollbar-color: var(--gh-border) transparent; +} + +.md-nav__title { + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--gh-fg-muted) !important; + padding: 0.75rem 0.6rem 0.25rem; +} + +.md-nav__link { + font-size: 0.875rem; + color: var(--gh-fg-muted) !important; + border-radius: 6px; + padding: 0.25rem 0.6rem; + transition: background-color 0.1s ease, color 0.1s ease; +} + +.md-nav__link:hover { + color: var(--gh-fg) !important; + background-color: rgba(177, 186, 196, 0.08); + text-decoration: none; +} + +.md-nav__link--active { + color: var(--gh-fg) !important; + font-weight: 600 !important; + background-color: var(--gh-blue-muted) !important; +} + +/* ── Search ───────────────────────────────────────────────────── */ +.md-search__form { + background-color: var(--gh-canvas) !important; + border: 1px solid var(--gh-border) !important; + border-radius: 6px !important; + box-shadow: none !important; + transition: border-color 0.15s ease, box-shadow 0.15s ease; +} + +.md-search__form:focus-within { + border-color: var(--gh-blue) !important; + box-shadow: 0 0 0 3px rgba(47, 129, 247, 0.15) !important; +} + +.md-search__input { + font-family: var(--gh-font-sans) !important; + color: var(--gh-fg) !important; +} + +.md-search__input::placeholder { + color: var(--gh-fg-subtle) !important; +} + +.md-search-result__article { + background-color: var(--gh-canvas-subtle) !important; +} + +/* ── Content area ─────────────────────────────────────────────── */ +.md-content { + background-color: var(--gh-canvas); +} + +.md-main__inner { + margin-top: 0; +} + +/* ── Links ────────────────────────────────────────────────────── */ +.md-typeset a { + color: var(--gh-blue); + text-decoration: none; + transition: color 0.15s ease; +} + +.md-typeset a:hover { + color: var(--gh-blue); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 2px; +} + +/* ── Code blocks ──────────────────────────────────────────────── */ +.md-typeset code:not(pre code) { + background-color: rgba(110, 118, 129, 0.1) !important; + color: var(--gh-fg) !important; + border: 1px solid var(--gh-border-muted); + border-radius: 6px !important; + padding: 0.1em 0.4em !important; + font-size: 0.83em !important; +} + +.md-typeset pre { + border-radius: 6px !important; + border: 1px solid var(--gh-border) !important; + box-shadow: none !important; + line-height: 1.6; +} + +.md-typeset pre > code { + font-size: 0.875em !important; + padding: 1rem 1.25rem !important; +} + +/* Code copy button */ +.md-code__content .md-clipboard { + color: var(--gh-fg-muted); +} + +/* ── Tables ───────────────────────────────────────────────────── */ +.md-typeset table:not([class]) { + border-radius: 6px !important; + overflow: hidden; + border: 1px solid var(--gh-border) !important; + border-collapse: separate !important; + border-spacing: 0 !important; + font-size: 0.875rem; + width: 100%; +} + +.md-typeset table:not([class]) th { + background-color: var(--gh-canvas-subtle) !important; + color: var(--gh-fg) !important; + font-size: 0.75rem !important; + font-weight: 600 !important; + text-transform: uppercase !important; + letter-spacing: 0.06em !important; + padding: 0.6rem 0.9rem !important; + border-bottom: 1px solid var(--gh-border) !important; +} + +.md-typeset table:not([class]) td { + padding: 0.6rem 0.9rem !important; + border-bottom: 1px solid var(--gh-border-muted) !important; + color: var(--gh-fg) !important; + background: var(--gh-canvas) !important; +} + +.md-typeset table:not([class]) tr:last-child td { + border-bottom: none !important; +} + +.md-typeset table:not([class]) tbody tr:hover td { + background: rgba(177, 186, 196, 0.04) !important; +} + +/* ── Buttons ──────────────────────────────────────────────────── */ +.md-button { + font-family: var(--gh-font-sans) !important; + font-size: 0.875rem !important; + font-weight: 500 !important; + border-radius: 6px !important; + padding: 0.4rem 1rem !important; + transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease !important; +} + +.md-button--primary { + background-color: #238636 !important; + border-color: rgba(240, 246, 252, 0.1) !important; + color: #ffffff !important; +} + +.md-button--primary:hover { + background-color: #2ea043 !important; + box-shadow: 0 0 0 3px rgba(46, 160, 67, 0.25) !important; + color: #ffffff !important; +} + +.md-button:not(.md-button--primary) { + background-color: var(--gh-canvas-subtle) !important; + border: 1px solid var(--gh-border) !important; + color: var(--gh-fg) !important; +} + +.md-button:not(.md-button--primary):hover { + background-color: var(--gh-border-muted) !important; + border-color: var(--gh-fg-muted) !important; +} + +/* ── Admonitions ──────────────────────────────────────────────── */ +.md-typeset .admonition, +.md-typeset details { + border-radius: 6px !important; + border-left-width: 3px !important; + box-shadow: none !important; + font-size: 0.875rem; +} + +.md-typeset .note, +.md-typeset .info { + border-left-color: var(--gh-blue) !important; + background-color: rgba(47, 129, 247, 0.1) !important; +} + +.md-typeset .warning, +.md-typeset .caution { + border-left-color: var(--gh-orange) !important; + background-color: rgba(210, 153, 34, 0.1) !important; +} + +.md-typeset .tip, +.md-typeset .important { + border-left-color: var(--gh-green) !important; + background-color: rgba(63, 185, 80, 0.1) !important; +} + +.md-typeset .danger, +.md-typeset .failure { + border-left-color: var(--gh-red) !important; + background-color: rgba(248, 81, 73, 0.1) !important; +} + +.md-typeset .admonition-title, +.md-typeset summary { + font-weight: 600; + font-size: 0.875rem !important; +} + +/* ── Grid cards ───────────────────────────────────────────────── */ +.md-typeset .grid.cards > ul > li, +.md-typeset .grid.cards > ol > li { + border: 1px solid var(--gh-border) !important; + border-radius: 6px !important; + background-color: var(--gh-canvas-subtle) !important; + transition: border-color 0.15s ease, box-shadow 0.15s ease; + padding: 1rem 1.25rem; +} + +.md-typeset .grid.cards > ul > li:hover, +.md-typeset .grid.cards > ol > li:hover { + border-color: var(--gh-blue) !important; + box-shadow: 0 0 0 3px var(--gh-blue-muted) !important; +} + +/* ── Hero section ─────────────────────────────────────────────── */ +.dt-hero { + text-align: center; + padding: 3.5rem 1rem 2.5rem; + border-bottom: 1px solid var(--gh-border-muted); + margin-bottom: 2rem; +} + +.dt-hero h1 { + font-size: clamp(1.75rem, 4vw, 2.75rem) !important; + font-weight: 700 !important; + letter-spacing: -0.04em !important; + line-height: 1.2 !important; + color: var(--gh-fg) !important; + margin-bottom: 0.75rem !important; +} + +.dt-hero p { + font-size: 1.05rem; + color: var(--gh-fg-muted); + max-width: 52ch; + margin: 0 auto 1.75rem !important; + line-height: 1.7; +} + +.dt-hero .md-button { + margin: 0.25rem; +} + +/* ── Footer ───────────────────────────────────────────────────── */ +.md-footer { + background-color: var(--gh-canvas-subtle) !important; + border-top: 1px solid var(--gh-border) !important; +} + +.md-footer-meta { + background-color: var(--gh-canvas) !important; + border-top: 1px solid var(--gh-border-muted) !important; +} + +.md-footer__title, +.md-footer-meta__inner { + color: var(--gh-fg-muted) !important; + font-size: 0.8rem; +} + +.md-footer__link:hover .md-footer__title { + color: var(--gh-fg) !important; +} + +/* ── Breadcrumb / page meta ───────────────────────────────────── */ +.md-source { + gap: 0.5rem; +} + +/* ── Back to top ──────────────────────────────────────────────── */ +.md-top { + background-color: var(--gh-canvas-subtle) !important; + border: 1px solid var(--gh-border) !important; + border-radius: 6px !important; + color: var(--gh-fg-muted) !important; + box-shadow: var(--md-shadow-z2) !important; +} + +.md-top:hover { + color: var(--gh-fg) !important; +} + +/* ── HR ───────────────────────────────────────────────────────── */ +.md-typeset hr { + border-color: var(--gh-border-muted) !important; + margin: 2rem 0 !important; +} + +/* ── TOC (right sidebar) ──────────────────────────────────────── */ +.md-nav--secondary .md-nav__link { + font-size: 0.8rem; + color: var(--gh-fg-muted) !important; +} + +.md-nav--secondary .md-nav__link:hover, +.md-nav--secondary .md-nav__link--active { + color: var(--gh-blue) !important; +} + +/* ── Scrollbar ────────────────────────────────────────────────── */ +* { + scrollbar-width: thin; + scrollbar-color: var(--gh-border) transparent; +} + +::-webkit-scrollbar { width: 6px; height: 6px; } +::-webkit-scrollbar-thumb { background-color: var(--gh-border); border-radius: 3px; } +::-webkit-scrollbar-track { background: transparent; } diff --git a/docs/assets/images/favicon.svg b/docs/assets/images/favicon.svg new file mode 100644 index 0000000..e00e8a2 --- /dev/null +++ b/docs/assets/images/favicon.svg @@ -0,0 +1,4 @@ + + + D + diff --git a/docs/assets/images/logo.svg b/docs/assets/images/logo.svg new file mode 100644 index 0000000..4d4bf0a --- /dev/null +++ b/docs/assets/images/logo.svg @@ -0,0 +1,4 @@ + + + D + diff --git a/docs/guides/adding-pages.md b/docs/guides/adding-pages.md new file mode 100644 index 0000000..46f7c0d --- /dev/null +++ b/docs/guides/adding-pages.md @@ -0,0 +1,159 @@ +--- +title: Adding & Editing Pages +description: How to add or edit pages on the DistTopic website directly from GitHub. +--- + +# Adding & Editing Pages + +This site is built with [MkDocs Material](https://squidfunk.github.io/mkdocs-material/). You can create and edit pages directly from GitHub's web interface — no local setup required. + +## Edit an existing page + +Every page has an **:material-pencil: Edit this page** button in the top-right corner. Click it to open the file in GitHub's editor, make your changes, and commit. + +## Create a new page + +1. Go to the [repository on GitHub](https://github.com/DistTopic/disttopic.github.io) +2. Navigate to `docs/` and then to the relevant section folder +3. Click **Add file** → **Create new file** +4. Name the file with a `.md` extension (e.g., `my-page.md`) +5. Add the front matter and content (see below) +6. Commit — the site rebuilds automatically within ~1 minute +7. Add the page to `mkdocs.yml` nav section (see below) + +## Front matter + +Every page needs a minimal YAML block at the top: + +```yaml +--- +title: My Page Title +description: Brief description for search engines. +--- +``` + +That's it. Navigation order is controlled by `mkdocs.yml`, not per-file front matter. + +## Adding to navigation + +After creating a file, add it to the `nav:` section in [`mkdocs.yml`](https://github.com/DistTopic/disttopic.github.io/edit/main/mkdocs.yml): + +```yaml +nav: + - Projects: + - projects/index.md + - My New Project: projects/my-new-project.md # add here +``` + +The key is the display name, the value is the path relative to `docs/`. + +## File structure + +``` +docs/ +├── index.md # Homepage +├── about.md # About page +├── projects/ +│ ├── index.md # Projects section index +│ └── *.md # Individual project pages +└── guides/ + ├── index.md # Guides section index + └── *.md # Individual guides +``` + +## Markdown features + +### Admonitions (callouts) + +```markdown +!!! note + This is a note. + +!!! warning + This is a warning. + +!!! tip "Custom title" + This is a tip with a custom title. +``` + +Renders as: + +!!! note + This is a note. + +!!! warning + This is a warning. + +### Buttons + +```markdown +[Primary Button](https://example.com){ .md-button .md-button--primary } +[Default Button](https://example.com){ .md-button } +``` + +### Tabbed content + +```markdown +=== "Linux / macOS" + ```bash + your-command + ``` + +=== "Windows" + ```powershell + Your-Command + ``` +``` + +### Grid cards (feature lists) + +```markdown +
+ +- :material-tools: **Feature Name** + + Description of the feature. + +- :material-shield: **Another Feature** + + Description of another feature. + +
+``` + +### Icons + +Use `:material-icon-name:` for [Material icons](https://squidfunk.github.io/mkdocs-material/reference/icons-emojis/), e.g. `:material-github:` → :material-github: + +## Adding a new project page + +Create `docs/projects/my-project.md`: + +```markdown +--- +title: My Project Name +description: Short description of the project. +--- + +# My Project Name + +Description... +``` + +Then add to `mkdocs.yml`: + +```yaml +nav: + - Projects: + - projects/index.md + - My Project Name: projects/my-project.md +``` + +## Security considerations + +When adding content: + +- **No `