Skip to content

feat(blog): update + style blog index page#349

Open
Anca2022 wants to merge 9 commits into
stagingfrom
am/blog-index-page
Open

feat(blog): update + style blog index page#349
Anca2022 wants to merge 9 commits into
stagingfrom
am/blog-index-page

Conversation

@Anca2022

@Anca2022 Anca2022 commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR redesigns the Foundation Blog index page to match the Figma spec.

  • Pagination: replaced first/last buttons with prev/next icon arrows, removed firstUrl/lastUrl props (updated all callers), added ellipsis logic via a new getVisiblePages

  • Blog index layout: updated the layout to match Figma, added Breadcrumbs, grouped filters in a semantically labelled <section>, threaded totalEntries through all 6 blog route files so the results count can be displayed.

  • Filter components:

    • ContentLangFilter: rebuilt as an accessible dropdown
    • ContentLangNotice: simplified to a results count + viewing-language inline notice
image image image

Related Issue

Fixes INTORG-770

Manual Test

Go to the Blog Index page, switch languages, change the filters, and verify that the displayed results are updated correctly and align with the expected content.

Checks

  • pnpm run format
  • pnpm run lint

PR Checklist

  • PR title follows Conventional Commits (e.g. feat: ..., fix: ...)
  • Linked issue included
  • Scope is focused (target ~10-20 files when possible)
  • Screenshots for UI changes (if applicable)

@Anca2022 Anca2022 self-assigned this Jun 22, 2026
@netlify

netlify Bot commented Jun 22, 2026

Copy link
Copy Markdown

Deploy Preview for interledger-org-v5 ready!

Name Link
🔨 Latest commit 8811cf4
🔍 Latest deploy log https://app.netlify.com/projects/interledger-org-v5/deploys/6a3ce55eacdd3900078364ac
😎 Deploy Preview https://deploy-preview-349--interledger-org-v5.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@Anca2022 Anca2022 temporarily deployed to strapi-staging June 22, 2026 10:24 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 22, 2026 15:46 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 23, 2026 07:27 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 23, 2026 09:18 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 23, 2026 13:56 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 25, 2026 06:36 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 25, 2026 08:04 — with GitHub Actions Inactive
@Anca2022 Anca2022 temporarily deployed to strapi-staging June 25, 2026 08:22 — with GitHub Actions Inactive
@Anca2022 Anca2022 marked this pull request as ready for review June 25, 2026 08:39
@JonathanMatthey JonathanMatthey self-requested a review June 25, 2026 09:47
}
<ul class={dropdownClasses} id="language-dropdown" role="list">
<li>
<a

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inside a

    , not role="menuitem"/option. Mixing a disclosure-button pattern with plain links is acceptable, but then aria-controls pointing at a list and the rotate-on-expand chevron imply a menu. Pick one model and make the ARIA consistent.

<div class="flex flex-wrap items-center gap-md">
<button
id="language-filter"
aria-controls="language-dropdown"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing aria-haspopup="listbox" (or "menu"). Screen readers won't announce that activating it opens a popup.

}
<div class="flex text-body-sm-emphasis text-primary">
<p class="m-0 text-body-sm-emphasis">
{t('blog.lang_filter.results', { totalEntries })}&nbsp;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  appended after the results paragraph for spacing is a bit fragile; a flex gap would be cleaner than a hard space.

}
})

dropdown?.addEventListener('focusout', (e: FocusEvent) => {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the document click listener is never cleaned up. In Astro with view transitions / client-side nav this leaks a listener per navigation. Worth gating on astro:page-load or removing on unload.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants