<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Theming auf cbrueggenolte.de</title>
    <link>https://cbrueggenolte.de/tags/theming/</link>
    <description>Neueste Beiträge in Theming auf cbrueggenolte.de</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>de-DE</language>
    <managingEditor>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</managingEditor>
    <webMaster>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</webMaster>
    <copyright>2018-2026 cbrueggenolte</copyright>
    <lastBuildDate>Fri, 14 Nov 2025 00:00:00 +0100</lastBuildDate>
    <atom:link href="https://cbrueggenolte.de/tags/theming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Simple Admonitions in Astro</title>
      <link>https://cbrueggenolte.de/simple-admonitions-in-astro/</link>
      <pubDate>Fri, 14 Nov 2025 00:00:00 +0100</pubDate><author>96ca5227@cbrueggenolte.de (cbrueggenolte.de)</author>
      <guid>https://cbrueggenolte.de/simple-admonitions-in-astro/</guid>
      <description>&lt;p&gt;Add &lt;strong&gt;clean, professional, and accessible&lt;/strong&gt; admonition blocks to your Astro site&#xA;— perfect for documentation, tutorials, or blog posts.&lt;/p&gt;&#xA;&lt;p&gt;This guide gives you:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;6 types&lt;/strong&gt;: &lt;code&gt;tip&lt;/code&gt;, &lt;code&gt;warning&lt;/code&gt;, &lt;code&gt;danger&lt;/code&gt;, &lt;code&gt;note&lt;/code&gt;, &lt;code&gt;info&lt;/code&gt;, &lt;code&gt;caution&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Custom titles&lt;/strong&gt; via &lt;code&gt;[Your Title]&lt;/code&gt; syntax&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Soft stone-themed colors&lt;/strong&gt; (pale, desaturated, readable)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Zero JavaScript&lt;/strong&gt;, fully static&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;No icons&lt;/strong&gt;, minimal &amp;amp; elegant&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;step-1-install-required-package&#34;&gt;Step 1: Install Required Package&lt;/h2&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;ln&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;cl&#34;&gt;npm install remark-directive&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;h2 id=&#34;step-2-create-the-remark-plugin&#34;&gt;Step 2: Create the Remark Plugin&lt;/h2&gt;&#xA;&lt;p&gt;Create &lt;code&gt;remark-admonition.js&lt;/code&gt; in your project root:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Add <strong>clean, professional, and accessible</strong> admonition blocks to your Astro site
— perfect for documentation, tutorials, or blog posts.</p>
<p>This guide gives you:</p>
<ul>
<li><strong>6 types</strong>: <code>tip</code>, <code>warning</code>, <code>danger</code>, <code>note</code>, <code>info</code>, <code>caution</code></li>
<li><strong>Custom titles</strong> via <code>[Your Title]</code> syntax</li>
<li><strong>Soft stone-themed colors</strong> (pale, desaturated, readable)</li>
<li><strong>Zero JavaScript</strong>, fully static</li>
<li><strong>No icons</strong>, minimal &amp; elegant</li>
</ul>
<hr>
<h2 id="step-1-install-required-package">Step 1: Install Required Package</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">npm install remark-directive</span></span></code></pre></div><hr>
<h2 id="step-2-create-the-remark-plugin">Step 2: Create the Remark Plugin</h2>
<p>Create <code>remark-admonition.js</code> in your project root:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">visit</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;unist-util-visit&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="cm">/** Admonition Plugin – compatible with Astro + ESM + remark-directive */</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kd">function</span> <span class="nx">remarkAdmonitionCompatible</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">return</span> <span class="p">(</span><span class="nx">tree</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="nx">visit</span><span class="p">(</span><span class="nx">tree</span><span class="p">,</span> <span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">      <span class="k">if</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="nx">node</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;containerDirective&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="p">[</span><span class="s1">&#39;tip&#39;</span><span class="p">,</span> <span class="s1">&#39;warning&#39;</span><span class="p">,</span> <span class="s1">&#39;danger&#39;</span><span class="p">,</span> <span class="s1">&#39;note&#39;</span><span class="p">,</span> <span class="s1">&#39;info&#39;</span><span class="p">,</span> <span class="s1">&#39;caution&#39;</span><span class="p">].</span><span class="nx">includes</span><span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">name</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="kr">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">data</span> <span class="o">||</span> <span class="p">(</span><span class="nx">node</span><span class="p">.</span><span class="nx">data</span> <span class="o">=</span> <span class="p">{});</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="kr">const</span> <span class="nx">type</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">name</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="kr">const</span> <span class="nx">titleText</span> <span class="o">=</span> <span class="nx">type</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">+</span> <span class="nx">type</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="c1">// Main element: &lt;div class=&#34;admonition admonition-tip&#34;&gt;
</span></span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="nx">data</span><span class="p">.</span><span class="nx">hName</span> <span class="o">=</span> <span class="s1">&#39;div&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="nx">data</span><span class="p">.</span><span class="nx">hProperties</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">          <span class="nx">className</span><span class="o">:</span> <span class="p">[</span><span class="sb">`admonition`</span><span class="p">,</span> <span class="sb">`admonition-</span><span class="si">${</span><span class="nx">type</span><span class="si">}</span><span class="sb">`</span><span class="p">],</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="p">};</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="c1">// Check if the first child is a paragraph (often contains the title)
</span></span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="kr">const</span> <span class="nx">firstChild</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        <span class="kd">let</span> <span class="nx">titleContent</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">firstChild</span><span class="o">?</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;paragraph&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">          <span class="kr">const</span> <span class="nx">textContent</span> <span class="o">=</span> <span class="nx">firstChild</span><span class="p">.</span><span class="nx">children</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">            <span class="p">.</span><span class="nx">filter</span><span class="p">((</span><span class="nx">child</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">child</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;text&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">            <span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">child</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="nx">child</span><span class="p">.</span><span class="nx">value</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">            <span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">            <span class="p">.</span><span class="nx">trim</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">          <span class="k">if</span> <span class="p">(</span><span class="nx">textContent</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">textContent</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="s1">&#39;\n&#39;</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">            <span class="nx">titleContent</span> <span class="o">=</span> <span class="nx">firstChild</span><span class="p">.</span><span class="nx">children</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">            <span class="c1">// Remove the first paragraph, as it is now the title
</span></span></span><span class="line"><span class="ln">35</span><span class="cl">            <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">.</span><span class="nx">shift</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl">        <span class="c1">// If no title from content → default title
</span></span></span><span class="line"><span class="ln">40</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">titleContent</span><span class="p">.</span><span class="nx">length</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">          <span class="nx">titleContent</span> <span class="o">=</span> <span class="p">[{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;text&#39;</span><span class="p">,</span> <span class="nx">value</span><span class="o">:</span> <span class="nx">titleText</span> <span class="p">}];</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">
</span></span><span class="line"><span class="ln">44</span><span class="cl">        <span class="c1">// Create title element: &lt;p class=&#34;admonition-title&#34;&gt;TIP&lt;/p&gt;
</span></span></span><span class="line"><span class="ln">45</span><span class="cl">        <span class="kr">const</span> <span class="nx">titleNode</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">          <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;paragraph&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">          <span class="nx">data</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">            <span class="nx">hName</span><span class="o">:</span> <span class="s1">&#39;p&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">            <span class="nx">hProperties</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">              <span class="nx">className</span><span class="o">:</span> <span class="s1">&#39;admonition-title&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">            <span class="p">},</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">          <span class="p">},</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">          <span class="nx">children</span><span class="o">:</span> <span class="nx">titleContent</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">        <span class="p">};</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl">
</span></span><span class="line"><span class="ln">56</span><span class="cl">        <span class="c1">// Insert title at the front
</span></span></span><span class="line"><span class="ln">57</span><span class="cl">        <span class="nx">node</span><span class="p">.</span><span class="nx">children</span><span class="p">.</span><span class="nx">unshift</span><span class="p">(</span><span class="nx">titleNode</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">  <span class="p">};</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><hr>
<h2 id="step-3-update-astroconfigmjs">Step 3: Update <code>astro.config.mjs</code></h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">// astro.config.mjs
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kr">import</span> <span class="p">{</span> <span class="nx">defineConfig</span> <span class="p">}</span> <span class="nx">from</span> <span class="s1">&#39;astro/config&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kr">import</span> <span class="nx">remarkDirective</span> <span class="nx">from</span> <span class="s1">&#39;remark-directive&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kr">import</span> <span class="nx">remarkAdmonitionCompatible</span> <span class="nx">from</span> <span class="s1">&#39;./remark-admonition.js&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kr">export</span> <span class="k">default</span> <span class="nx">defineConfig</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="nx">markdown</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="nx">remarkPlugins</span><span class="o">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">      <span class="nx">remarkDirective</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="nx">remarkAdmonitionCompatible</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="p">},</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">});</span></span></span></code></pre></div><hr>
<h2 id="step-4-add-global-styles">Step 4: Add Global Styles</h2>
<p>Either add the styles to your <code>global.css</code> file
or create <code>src/styles/admonitions.css</code> and import it into your layout.</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c">/* src/styles/admonitions.css */</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mf">1.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">padding</span><span class="p">:</span> <span class="mf">0.75</span><span class="kt">rem</span> <span class="mi">1</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">border-left</span><span class="p">:</span> <span class="mi">4</span><span class="kt">px</span> <span class="kc">solid</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="k">border-radius</span><span class="p">:</span> <span class="mf">0.375</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-50</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="k">font-size</span><span class="p">:</span> <span class="mf">0.9375</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="k">line-height</span><span class="p">:</span> <span class="mf">1.6</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="o">&gt;</span> <span class="p">:</span><span class="nd">first-child</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="k">margin-top</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="o">&gt;</span> <span class="p">:</span><span class="nd">last-child</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="k">margin-bottom</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mf">0.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-700</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span><span class="p">:</span><span class="nd">first-of-type</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">  <span class="k">margin-top</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="p">.</span><span class="nc">admonition</span> <span class="nt">p</span><span class="p">:</span><span class="nd">last-of-type</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="k">margin-bottom</span><span class="p">:</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="c">/* Title */</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="p">.</span><span class="nc">admonition-title</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">0</span> <span class="mi">0</span> <span class="mf">0.5</span><span class="kt">rem</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">  <span class="k">font-weight</span><span class="p">:</span> <span class="mi">600</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">  <span class="k">font-size</span><span class="p">:</span> <span class="mf">0.8125</span><span class="kt">rem</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">  <span class="k">text-transform</span><span class="p">:</span> <span class="kc">uppercase</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">  <span class="k">letter-spacing</span><span class="p">:</span> <span class="mf">0.05</span><span class="kt">em</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="n">stone</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="c">/* Tip – Green */</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="p">.</span><span class="nc">admonition-tip</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">green</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="c">/* Warning – Yellow */</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl"><span class="p">.</span><span class="nc">admonition-warning</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">yellow</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl">
</span></span><span class="line"><span class="ln">57</span><span class="cl"><span class="c">/* Danger – Red */</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl"><span class="p">.</span><span class="nc">admonition-danger</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">red</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">63</span><span class="cl">
</span></span><span class="line"><span class="ln">64</span><span class="cl"><span class="c">/* Note – Blue */</span>
</span></span><span class="line"><span class="ln">65</span><span class="cl"><span class="p">.</span><span class="nc">admonition-note</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">66</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">67</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">68</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">blue</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">69</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">70</span><span class="cl">
</span></span><span class="line"><span class="ln">71</span><span class="cl"><span class="c">/* Info – Cyan */</span>
</span></span><span class="line"><span class="ln">72</span><span class="cl"><span class="p">.</span><span class="nc">admonition-info</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">73</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">74</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">75</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">cyan</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">76</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">77</span><span class="cl">
</span></span><span class="line"><span class="ln">78</span><span class="cl"><span class="c">/* Caution – Orange */</span>
</span></span><span class="line"><span class="ln">79</span><span class="cl"><span class="p">.</span><span class="nc">admonition-caution</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">80</span><span class="cl">  <span class="k">background-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-100</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">81</span><span class="cl">  <span class="k">border-color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-300</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">82</span><span class="cl">  <span class="k">color</span><span class="p">:</span> <span class="nf">var</span><span class="p">(</span><span class="o">--</span><span class="kc">color</span><span class="o">-</span><span class="kc">orange</span><span class="mi">-800</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">83</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><blockquote>
<p><strong>Import in your layout:</strong></p>
</blockquote>





<pre tabindex="0"><code class="language-astro" data-lang="astro">---
// src/layouts/BlogPost.astro
import &#39;../styles/admonitions.css&#39;;
---</code></pre><hr>
<h2 id="step-5-define-color-variables-optional-but-recommended">Step 5: Define Color Variables (Optional but Recommended)</h2>
<p>If you are not using Tailwind.css as I am, add these color variables to your global CSS or <code>:root</code>:</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="p">:</span><span class="nd">root</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="c">/* Stone */</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="nv">--color-stone-50</span><span class="p">:</span> <span class="mh">#fafaf9</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="nv">--color-stone-700</span><span class="p">:</span> <span class="mh">#44403c</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="nv">--color-stone-800</span><span class="p">:</span> <span class="mh">#292524</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="c">/* Green */</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="nv">--color-green-100</span><span class="p">:</span> <span class="mh">#f0fdf4</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="nv">--color-green-300</span><span class="p">:</span> <span class="mh">#86efac</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="nv">--color-green-800</span><span class="p">:</span> <span class="mh">#166534</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="c">/* Yellow */</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="nv">--color-yellow-100</span><span class="p">:</span> <span class="mh">#fefce8</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="nv">--color-yellow-300</span><span class="p">:</span> <span class="mh">#fde047</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="nv">--color-yellow-800</span><span class="p">:</span> <span class="mh">#9a3412</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="c">/* Red */</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="nv">--color-red-100</span><span class="p">:</span> <span class="mh">#fef2f2</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">  <span class="nv">--color-red-300</span><span class="p">:</span> <span class="mh">#fca5a5</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">  <span class="nv">--color-red-800</span><span class="p">:</span> <span class="mh">#991b1b</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="c">/* Blue */</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">  <span class="nv">--color-blue-100</span><span class="p">:</span> <span class="mh">#eff6ff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="nv">--color-blue-300</span><span class="p">:</span> <span class="mh">#93c5fd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="nv">--color-blue-800</span><span class="p">:</span> <span class="mh">#1e40af</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl">  <span class="c">/* Cyan */</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">  <span class="nv">--color-cyan-100</span><span class="p">:</span> <span class="mh">#ecfeff</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">  <span class="nv">--color-cyan-300</span><span class="p">:</span> <span class="mh">#67e8f9</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">  <span class="nv">--color-cyan-800</span><span class="p">:</span> <span class="mh">#0e7490</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">  <span class="c">/* Orange */</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">  <span class="nv">--color-orange-100</span><span class="p">:</span> <span class="mh">#fff7ed</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">  <span class="nv">--color-orange-300</span><span class="p">:</span> <span class="mh">#fdba74</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">  <span class="nv">--color-orange-800</span><span class="p">:</span> <span class="mh">#9c4221</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><hr>
<h2 id="example-usage-in-markdown">Example Usage in Markdown</h2>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-md" data-lang="md"><span class="line"><span class="ln"> 1</span><span class="cl">:::tip[Pro Tip]
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">Use <span class="sb">`Cmd + K`</span> to open the command palette.
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">:::
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">:::warning
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">Never commit your <span class="sb">`.env`</span> file.
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">:::
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">:::danger
</span></span><span class="line"><span class="ln">10</span><span class="cl">This action <span class="gs">**cannot be undone**</span>.
</span></span><span class="line"><span class="ln">11</span><span class="cl">:::
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">:::note
</span></span><span class="line"><span class="ln">14</span><span class="cl">Astro compiles to static HTML by default.
</span></span><span class="line"><span class="ln">15</span><span class="cl">:::
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl">:::info[Did You Know?]
</span></span><span class="line"><span class="ln">18</span><span class="cl">You can use <span class="sb">`.astro`</span> files inside Markdown with MDX.
</span></span><span class="line"><span class="ln">19</span><span class="cl">:::
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">:::caution
</span></span><span class="line"><span class="ln">22</span><span class="cl">This feature is experimental — test thoroughly.
</span></span><span class="line"><span class="ln">23</span><span class="cl">:::</span></span></code></pre></div><hr>
<h3 id="result">Result</h3>
<p>:::tip[Pro Tip]
Use <code>Cmd + K</code> to open the command palette.
:::</p>
<p>:::warning
Never commit your <code>.env</code> file.
:::</p>
<p>:::danger
This action <strong>cannot be undone</strong>.
:::</p>
<p>:::note
Astro compiles to static HTML by default.
:::</p>
<p>:::info[Did You Know?]
You can use <code>.astro</code> files inside Markdown with MDX.
:::</p>
<p>:::caution
This feature is experimental — test thoroughly.
:::</p>
<hr>
<h2 id="done">Done</h2>
<p>You now have:</p>
<ul>
<li><strong>6 flexible admonition types</strong></li>
<li><strong>Custom titles</strong> with <code>[Title]</code> syntax</li>
<li><strong>Clean, stone-themed design</strong></li>
<li><strong>Full Astro + ESM compatibility</strong></li>
<li><strong>Zero runtime overhead</strong></li>
</ul>
<blockquote>
<p><strong>Pro tip</strong>: Want <code>success</code> or <code>example</code> later? Just add the name to the array in the plugin and a CSS rule — done.</p>
</blockquote>
<p>Clean. Simple. Powerful.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
