diff --git a/assets/css/extended/homepage.css b/assets/css/extended/homepage.css index 28c51e3..fee58ea 100644 --- a/assets/css/extended/homepage.css +++ b/assets/css/extended/homepage.css @@ -281,6 +281,56 @@ box-shadow: 0 2px 12px rgba(255, 255, 255, 0.05); } +/* ── Related projects ────────────────────────────────────────────────────── */ +.related-section { + margin-bottom: 3rem; +} + +.related-list { + list-style: none; + margin: 0; + padding: 0; + display: grid; + grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); + gap: 0.6rem; +} + +.related-list li { + margin: 0; +} + +.related-item { + display: flex; + height: 100%; + flex-direction: column; + gap: 0.1rem; + padding: 0.5rem 0.75rem; + border: 1px solid var(--border); + border-radius: 8px; + text-decoration: none; + color: var(--primary); + transition: + border-color 0.15s, + background 0.15s; +} + +.related-item:hover { + border-color: var(--primary); + background: var(--entry); +} + +.related-item-name { + font-size: 0.9rem; + font-weight: 600; + line-height: 1.3; +} + +.related-item-description { + font-size: 0.8rem; + color: var(--secondary); + line-height: 1.4; +} + /* ── NSF footer ──────────────────────────────────────────────────────────── */ /* Full-width glassy strip; the text inside stays at main width */ .nsf-footer { diff --git a/assets/css/extended/page-fx.css b/assets/css/extended/page-fx.css index bd9529b..07610ef 100644 --- a/assets/css/extended/page-fx.css +++ b/assets/css/extended/page-fx.css @@ -107,7 +107,8 @@ body { /* ── Glassy tiles so the code field shows through frosted ───────────────── */ .project-card, .event-card, -.home-btn { +.home-btn, +.related-item { background: color-mix(in srgb, var(--entry) 25%, transparent); backdrop-filter: blur(3px); } diff --git a/data/related.yaml b/data/related.yaml new file mode 100644 index 0000000..069f723 --- /dev/null +++ b/data/related.yaml @@ -0,0 +1,47 @@ +- name: pybind11 + description: Seamless operability between C++11 and Python. + url: https://github.com/pybind/pybind11 + +- name: nanobind + description: Tiny and efficient C++/Python bindings. + url: https://github.com/wjakob/nanobind + +- name: cibuildwheel + description: Build Python wheels for all platforms on CI. + url: https://github.com/pypa/cibuildwheel + +- name: build + description: A simple, correct PEP 517 build frontend. + url: https://github.com/pypa/build + +- name: uv + description: An extremely fast Python package and project manager. + url: https://github.com/astral-sh/uv + +- name: packaging + description: Core utilities for Python packaging. + url: https://github.com/pypa/packaging + +- name: pyproject-metadata + description: Parse and validate PEP 621 project metadata. + url: https://github.com/pypa/pyproject-metadata + +- name: validate-pyproject + description: Validate pyproject.toml files against their schemas. + url: https://github.com/abravalheri/validate-pyproject + +- name: check-sdist + description: Check that an SDist matches the files in Git. + url: https://github.com/henryiii/check-sdist + +- name: repo-review + description: Framework that runs checks on repositories. + url: https://github.com/scientific-python/repo-review + +- name: flake8-lazy + description: Find modules that can be lazy imported in Python 3.15+. + url: https://github.com/henryiii/flake8-lazy + +- name: Scientific Python Development Guide + description: Recommendations for modern Python package development. + url: https://learn.scientific-python.org/development/ diff --git a/layouts/index.html b/layouts/index.html index 87f3e0b..841e585 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -174,4 +174,23 @@

{{ .name }}

{{- end }} + + {{- end }}