<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Samuel Osei: Writing</title>
    <link>https://oseiagm.com/blog</link>
    <description>Technical writing on accessibility, frontend engineering and WordPress.</description>
    <language>en</language>
    <atom:link href="https://oseiagm.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Five React components I rebuild accessibly on every project</title>
      <link>https://oseiagm.com/blog/accessible-react-components</link>
      <guid isPermaLink="true">https://oseiagm.com/blog/accessible-react-components</guid>
      <pubDate>Wed, 14 Oct 2026 00:00:00 GMT</pubDate>
      <description>Buttons, dialogs, disclosures, tabs and form fields: the components teams most often get wrong, and the small patterns that make them work for everyone.</description>
      <category>accessibility</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How I run a WordPress accessibility audit in an afternoon</title>
      <link>https://oseiagm.com/blog/wordpress-accessibility-audit</link>
      <guid isPermaLink="true">https://oseiagm.com/blog/wordpress-accessibility-audit</guid>
      <pubDate>Sat, 10 Oct 2026 00:00:00 GMT</pubDate>
      <description>My practical, repeatable process for auditing a WordPress or Elementor site against WCAG 2.2, plus the issues I find on almost every site.</description>
      <category>accessibility</category>
      <category>wordpress</category>
      <category>wcag</category>
      <category>elementor</category>
    </item>
  </channel>
</rss>