<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jael Meire</title>
    <description>The latest articles on DEV Community by Jael Meire (@jaelmeire).</description>
    <link>https://dev.to/jaelmeire</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3883388%2F246d10ab-cbb7-4f5d-af86-3342aabafb04.png</url>
      <title>DEV Community: Jael Meire</title>
      <link>https://dev.to/jaelmeire</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jaelmeire"/>
    <language>en</language>
    <item>
      <title>A better way to implement dark mode in Astra theme</title>
      <dc:creator>Jael Meire</dc:creator>
      <pubDate>Fri, 17 Apr 2026 01:07:10 +0000</pubDate>
      <link>https://dev.to/jaelmeire/a-better-way-to-implement-dark-mode-in-astra-theme-e17</link>
      <guid>https://dev.to/jaelmeire/a-better-way-to-implement-dark-mode-in-astra-theme-e17</guid>
      <description>&lt;p&gt;&lt;strong&gt;Astra doesn’t include a native dark mode, so most solutions rely on plugins that automatically invert colors and the result usually looks wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I ran into this problem while working on several WordPress projects using Astra.&lt;br&gt;
What I needed wasn’t automatic color inversion, but actual control over the color system.&lt;/p&gt;

&lt;p&gt;After testing multiple plugins, I noticed the same issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Colors were inverted blindly&lt;/li&gt;
&lt;li&gt;Design consistency was lost&lt;/li&gt;
&lt;li&gt;Custom palettes were often limited or locked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of modifying rendered colors, I took a different approach:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I remapped Astra’s global color variables directly.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This avoids runtime color inversion and keeps styles predictable, since everything is based on the same design system.&lt;/p&gt;

&lt;p&gt;What the plugin does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works specifically with Astra theme&lt;/li&gt;
&lt;li&gt;Supports custom color palettes&lt;/li&gt;
&lt;li&gt;Includes toggle, shortcode and widget&lt;/li&gt;
&lt;li&gt;Keeps the original design structure intact&lt;/li&gt;
&lt;li&gt;Lightweight and non-intrusive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;I turned this into a free plugin:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WordPress.org plugin directory: &lt;a href="https://wordpress.org/plugins/easy-dark-theme-for-astra/" rel="noopener noreferrer"&gt;Easy Dark Theme for Astra&lt;/a&gt;&lt;br&gt;
Open source code: &lt;a href="https://github.com/jaelmeire/easy-dark-theme-for-astra" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you’re using Astra in real projects, I’d really appreciate any feedback.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Control + Animation sections (complete view):&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc9rqu6s1kir7vlgeqxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc9rqu6s1kir7vlgeqxa.png" alt="Control + Animation sections (complete view)" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Astra Global Colors (Free Preset Palette selected):&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpp3ukb9c0sd7fdbx2ape.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpp3ukb9c0sd7fdbx2ape.png" alt="Astra Global Colors (Free Preset Palette selected)" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Astra Global Colors (Custom Palette selected):&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywgxkxnhlbrwwlur38e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fywgxkxnhlbrwwlur38e6.png" alt="Astra Global Colors (Custom Palette selected)" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Accessibility + Tools sections:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmvmdsiwnaphe1j1cczn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpmvmdsiwnaphe1j1cczn.png" alt="Accessibility + Tools sections" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>frontend</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
