<?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: Revaz Eristavi</title>
    <description>The latest articles on DEV Community by Revaz Eristavi (@eristavi).</description>
    <link>https://dev.to/eristavi</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2199495%2Fd4592d88-e46a-4945-a4f5-6578818c26d2.jpg</url>
      <title>DEV Community: Revaz Eristavi</title>
      <link>https://dev.to/eristavi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eristavi"/>
    <language>en</language>
    <item>
      <title>RevaCSS 2.0: start with HTML, set your defaults once</title>
      <dc:creator>Revaz Eristavi</dc:creator>
      <pubDate>Thu, 15 Oct 2026 06:24:04 +0000</pubDate>
      <link>https://dev.to/eristavi/revacss-20-start-with-html-set-your-defaults-once-4ooe</link>
      <guid>https://dev.to/eristavi/revacss-20-start-with-html-set-your-defaults-once-4ooe</guid>
      <description>&lt;p&gt;I built RevaCSS around a question: how much of an interface can we leave to HTML and CSS, while still giving it a consistent design?&lt;/p&gt;

&lt;p&gt;Version 2.0 is now available on GitHub. Its core is CSS, with no JavaScript runtime and no required build step for using the compiled stylesheet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eristavi.github.io/RevaCSS/launch/index.html" rel="noopener noreferrer"&gt;Try three small examples&lt;/a&gt; · &lt;a href="https://eristavi.github.io/RevaCSS/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt; · &lt;a href="https://github.com/eristavi/RevaCSS/releases/tag/v2.0.0" rel="noopener noreferrer"&gt;Source and downloads&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Set the defaults on a parent
&lt;/h2&gt;

&lt;p&gt;RevaCSS uses data attributes to choose shared appearance settings. A page or section can set its theme, palette, shape and sizing. Components inside it pick up those choices through the framework's CSS rules and custom properties.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;section&lt;/span&gt; &lt;span class="na"&gt;data-theme=&lt;/span&gt;&lt;span class="s"&gt;"dark"&lt;/span&gt; &lt;span class="na"&gt;data-palette=&lt;/span&gt;&lt;span class="s"&gt;"default"&lt;/span&gt; &lt;span class="na"&gt;data-shape=&lt;/span&gt;&lt;span class="s"&gt;"rounded"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;article&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;A small project&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Shared defaults, with room for local changes.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/projects"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Browse projects&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button secondary"&lt;/span&gt; &lt;span class="na"&gt;data-shape=&lt;/span&gt;&lt;span class="s"&gt;"pill"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/about"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;About us&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/section&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second link overrides its shape locally. The other shared appearance choices still come from the section.&lt;/p&gt;

&lt;p&gt;The attributes themselves do not inherit: CSS implements the behaviour. A small set of classes identifies structures such as cards, containers, grids and stacks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eristavi.github.io/RevaCSS/launch/defaults.html" rel="noopener noreferrer"&gt;See the same interface in two treatments&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep browser behaviour in HTML
&lt;/h2&gt;

&lt;p&gt;A disclosure is still a &lt;code&gt;details&lt;/code&gt; element with a &lt;code&gt;summary&lt;/code&gt;. An exclusive group uses matching &lt;code&gt;name&lt;/code&gt; values in supporting browsers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;details&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"project-faq"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;Does this need JavaScript?&lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;The browser handles this disclosure.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;details&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"project-faq"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;Can I customise the design?&lt;span class="nt"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Use appearance attributes and ordinary CSS tokens.&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/details&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Native popovers use &lt;code&gt;popover&lt;/code&gt; and &lt;code&gt;popovertarget&lt;/code&gt;. Forms keep their labels, field types and browser validation. CSS motion enhances disclosures where the browser supports the necessary features; native interaction remains available without those enhancements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eristavi.github.io/RevaCSS/launch/native.html" rel="noopener noreferrer"&gt;Try the disclosures and popover&lt;/a&gt;, or &lt;a href="https://eristavi.github.io/RevaCSS/launch/forms.html" rel="noopener noreferrer"&gt;inspect a small form&lt;/a&gt;. These examples contain no JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use ordinary CSS for your own design
&lt;/h2&gt;

&lt;p&gt;Version 2.0 includes Default and Mono palettes, light/dark/system themes, shared geometry and spacing, and a system font option. Custom properties let you supply your own colours and design decisions.&lt;/p&gt;

&lt;p&gt;The compiled core stylesheet is about 104 KiB minified, or about 16 KiB gzipped. Optional extensions are separate; those figures describe the core rather than every possible material or effect.&lt;/p&gt;

&lt;p&gt;You can use RevaCSS in static HTML or server-rendered templates. Separate integrations are provided for Astro, Vue/Nuxt, React/Next.js, Svelte/SvelteKit and Laravel. They sit outside the CSS core; the application frameworks still have their own normal runtimes and responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it without a build step
&lt;/h2&gt;

&lt;p&gt;Download &lt;code&gt;reva-2.0.0.min.css&lt;/code&gt; from the &lt;a href="https://github.com/eristavi/RevaCSS/releases/tag/v2.0.0" rel="noopener noreferrer"&gt;GitHub release&lt;/a&gt;, save it beside your page, and link it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"reva-2.0.0.min.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then write your HTML. The demo hub also has an &lt;strong&gt;Open in CodePen&lt;/strong&gt; button for each example so you can change the markup and styling yourself.&lt;/p&gt;

&lt;p&gt;RevaCSS is MIT-licensed. It is a young project, and I would especially welcome feedback on the shared-defaults approach: does it make your markup easier to work with, and where would you want more control?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eristavi.github.io/RevaCSS/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt; · &lt;a href="https://github.com/eristavi/RevaCSS" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>css</category>
      <category>html</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
