<?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>Forem: Exaland App</title>
    <description>The latest articles on Forem by Exaland App (@exalandapp).</description>
    <link>https://forem.com/exalandapp</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%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png</url>
      <title>Forem: Exaland App</title>
      <link>https://forem.com/exalandapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/exalandapp"/>
    <language>en</language>
    <item>
      <title>Database Pilot for VSCODE</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Thu, 09 Apr 2026 01:05:59 +0000</pubDate>
      <link>https://forem.com/exalandapp/database-pilot-for-vscode-44mk</link>
      <guid>https://forem.com/exalandapp/database-pilot-for-vscode-44mk</guid>
      <description>&lt;h2&gt;
  
  
  🛢️ &lt;strong&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Exaland.database-pilot" rel="noopener noreferrer"&gt;Database Pilot&lt;/a&gt;&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A powerful, all-in-one&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
database &amp;amp; file client for Visual Studio Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VS Code Marketplace&lt;/p&gt;

&lt;p&gt;Logo&lt;/p&gt;

&lt;p&gt;Buy Me A Coffee&lt;/p&gt;

&lt;p&gt;✨ Features at a Glance&lt;br&gt;
Category&lt;/p&gt;

&lt;p&gt;Supported&lt;/p&gt;

&lt;p&gt;🗄️ SQL Databases&lt;/p&gt;

&lt;p&gt;MySQL · MariaDB · PostgreSQL · SQLite · SQL Server · ClickHouse · 达梦 (DM)&lt;/p&gt;

&lt;p&gt;🧩 NoSQL&lt;/p&gt;

&lt;p&gt;Redis · MongoDB · ElasticSearch · Cassandra&lt;/p&gt;

&lt;p&gt;☁️ Cloud / Storage&lt;/p&gt;

&lt;p&gt;AWS S3 · Azure Blob Storage · FTP · Firebase / Firestore&lt;/p&gt;

&lt;p&gt;🖥️ Remote&lt;/p&gt;

&lt;p&gt;SSH Client · SSH Tunnel · SFTP&lt;/p&gt;

&lt;p&gt;📁 File Explorer&lt;/p&gt;

&lt;p&gt;Local · AWS S3 · Azure Blob — multi-select, delete, export, image &amp;amp; video preview&lt;/p&gt;

&lt;p&gt;🚀 Installation&lt;br&gt;
Install from the VS Code Marketplace or Open VSX.&lt;/p&gt;

&lt;p&gt;ext install exaland.database-pilot&lt;/p&gt;

&lt;p&gt;🗄️ Database Connections&lt;br&gt;
Connect&lt;br&gt;
Open the Database Explorer panel in the sidebar.&lt;br&gt;
Click the + button to add a new connection.&lt;br&gt;
Select your database type, fill in the connection details, then click Connect.&lt;br&gt;
connection&lt;/p&gt;

&lt;p&gt;Browse &amp;amp; Edit Tables&lt;br&gt;
Click a table to open the interactive table view.&lt;br&gt;
Inline editing, filtering, pagination, and column sorting are all supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=Exaland.database-pilot" rel="noopener noreferrer"&gt;Download Here
&lt;/a&gt;
Execute SQL Queries&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vscode</category>
      <category>database</category>
    </item>
    <item>
      <title>Add demo page on GitHub Pages
Fix Mobile support (touch events)</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Wed, 08 Apr 2026 11:44:27 +0000</pubDate>
      <link>https://forem.com/exalandapp/add-demo-page-on-github-pagesfix-mobile-support-touch-events-1ho9</link>
      <guid>https://forem.com/exalandapp/add-demo-page-on-github-pagesfix-mobile-support-touch-events-1ho9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/exalandapp/a-scratchcard-component-for-react-5ej4" class="crayons-story__hidden-navigation-link"&gt;A scratchcard component for React&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/exalandapp" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" alt="exalandapp profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/exalandapp" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Exaland App
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Exaland App
                
              
              &lt;div id="story-author-preview-content-3450392" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/exalandapp" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Exaland App&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/exalandapp/a-scratchcard-component-for-react-5ej4" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 3&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/exalandapp/a-scratchcard-component-for-react-5ej4" id="article-link-3450392"&gt;
          A scratchcard component for React
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/exalandapp/a-scratchcard-component-for-react-5ej4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>A scratchcard component for React</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Fri, 03 Apr 2026 15:35:15 +0000</pubDate>
      <link>https://forem.com/exalandapp/a-scratchcard-component-for-react-5ej4</link>
      <guid>https://forem.com/exalandapp/a-scratchcard-component-for-react-5ej4</guid>
      <description>&lt;h1&gt;
  
  
  react-scratchingcard
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;A scratchcard component for React&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h5&gt;
  
  
  Original repo by Aleksik (not maintained)
&lt;/h5&gt;

&lt;p&gt;&lt;a href="https://github.com/aleksik/react-scratchcard" rel="noopener noreferrer"&gt;https://github.com/aleksik/react-scratchcard&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Improvement ✨
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Resize the image using width and height props (in the original repo, the image was croped)&lt;/li&gt;
&lt;li&gt;Smooth fade out animation on scratch complete&lt;/li&gt;
&lt;li&gt;Add type definition (ts)&lt;/li&gt;
&lt;li&gt;Change brush size through props&lt;/li&gt;
&lt;li&gt;Use custom brush through props&lt;/li&gt;
&lt;li&gt;Define a custom check zone through props&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&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%2Fmr05a3til6mg8hm7s9lz.gif" 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%2Fmr05a3til6mg8hm7s9lz.gif" alt="scratchcard-demo" width="360" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save&lt;/span&gt; react-scratchingcard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn add react-scratchingcard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;  &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;ScratchCard&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-scratchingcard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;IMG&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./img.jpg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ScratchCard&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;onClickReset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reset&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;onClickReset&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Reset&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;
        &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;226&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;IMG&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;finishPercent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;onComplete&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;complete&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;flex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;100%&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;alignItems&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;justifyContent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;center&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Scratch card&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Custom brush
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;
        &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;226&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;IMG&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;finishPercent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;customBrush&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./brush.img&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
          &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Scratch card&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or you can use CUSTOM_BRUSH_PRESET object&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CUSTOM_BRUSH_PRESET&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-scratchingcard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;
        &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;226&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;IMG&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;finishPercent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="na"&gt;customBrush&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;CUSTOM_BRUSH_PRESET&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Scratch card&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Type
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Props
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;default&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;height&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;File \&lt;/td&gt;
&lt;td&gt;string \&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;imageCrossOrigin&lt;/td&gt;
&lt;td&gt;?'' \&lt;/td&gt;
&lt;td&gt;'anonymous' \&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;finishPercent&lt;/td&gt;
&lt;td&gt;?number&lt;/td&gt;
&lt;td&gt;70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;brushSize&lt;/td&gt;
&lt;td&gt;?number&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fadeOutOnComplete&lt;/td&gt;
&lt;td&gt;?boolean&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;onComplete&lt;/td&gt;
&lt;td&gt;?callback&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;customBrush&lt;/td&gt;
&lt;td&gt;?CustomBrush&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;customCheckZone&lt;/td&gt;
&lt;td&gt;?CustomCheckZone&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Remote URL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;
  &lt;span class="na"&gt;width&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;height&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;226&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'https://cdn.example.com/scratch-cover.jpg'&lt;/span&gt;
  &lt;span class="na"&gt;imageCrossOrigin&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'anonymous'&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Scratch card&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ScratchCard&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: pour calculer le pourcentage gratté (&lt;code&gt;finishPercent&lt;/code&gt;) avec une image distante, le serveur distant doit autoriser CORS.&lt;/p&gt;

&lt;p&gt;Le composant n'impose plus CORS par defaut pour une URL distante. &lt;code&gt;imageCrossOrigin&lt;/code&gt; est utile seulement si ton serveur renvoie deja les en-tetes CORS voulus.&lt;/p&gt;

&lt;h3&gt;
  
  
  CustomBrush
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;height&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;File or Base64&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  CustomCheckZone
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;type&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;y&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;width&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;height&lt;/td&gt;
&lt;td&gt;number&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT © &lt;a href="https://github.com/exaland" rel="noopener noreferrer"&gt;exaland&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>New Update! 1.0.2

New UI/UX
Add Topic Live Editor</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Wed, 25 Mar 2026 23:42:45 +0000</pubDate>
      <link>https://forem.com/exalandapp/new-update-102new-uiuxadd-topic-live-editor-n2l</link>
      <guid>https://forem.com/exalandapp/new-update-102new-uiuxadd-topic-live-editor-n2l</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/exalandapp/mqtt-explorer-vscode-extension-4b3e" class="crayons-story__hidden-navigation-link"&gt;MQTT Explorer - VSCode Extension&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/exalandapp" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" alt="exalandapp profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/exalandapp" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Exaland App
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Exaland App
                
              
              &lt;div id="story-author-preview-content-3389634" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/exalandapp" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Exaland App&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/exalandapp/mqtt-explorer-vscode-extension-4b3e" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 23&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/exalandapp/mqtt-explorer-vscode-extension-4b3e" id="article-link-3389634"&gt;
          MQTT Explorer - VSCode Extension
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vscode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vscode&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mqtt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mqtt&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/exalandapp/mqtt-explorer-vscode-extension-4b3e" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/exalandapp/mqtt-explorer-vscode-extension-4b3e#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>mqtt</category>
    </item>
    <item>
      <title>New update !!!</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Mon, 23 Mar 2026 14:41:25 +0000</pubDate>
      <link>https://forem.com/exalandapp/new-update--ofk</link>
      <guid>https://forem.com/exalandapp/new-update--ofk</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/exalandapp/ssh-manager-vs-code-extension-48p6" class="crayons-story__hidden-navigation-link"&gt;🖥️ SSH Manager - VS Code Extension&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/exalandapp" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" alt="exalandapp profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/exalandapp" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Exaland App
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Exaland App
                
              
              &lt;div id="story-author-preview-content-3104087" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/exalandapp" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Exaland App&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/exalandapp/ssh-manager-vs-code-extension-48p6" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 14 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/exalandapp/ssh-manager-vs-code-extension-48p6" id="article-link-3104087"&gt;
          🖥️ SSH Manager - VS Code Extension
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vscode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vscode&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ssh"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ssh&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/exalandapp/ssh-manager-vs-code-extension-48p6" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt; reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/exalandapp/ssh-manager-vs-code-extension-48p6#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>vscode</category>
      <category>ssh</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Mon, 23 Mar 2026 14:39:41 +0000</pubDate>
      <link>https://forem.com/exalandapp/-2e9h</link>
      <guid>https://forem.com/exalandapp/-2e9h</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k" class="crayons-story__hidden-navigation-link"&gt;react-text-underline Premium highlighting &amp;amp; underlining components for React.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/exalandapp" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" alt="exalandapp profile" class="crayons-avatar__image" width="800" height="533"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/exalandapp" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Exaland App
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Exaland App
                
              
              &lt;div id="story-author-preview-content-3266752" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/exalandapp" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" class="crayons-avatar__image" alt="" width="800" height="533"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Exaland App&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Feb 18&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k" id="article-link-3266752"&gt;
          react-text-underline Premium highlighting &amp;amp; underlining components for React.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tailwindcss"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tailwindcss&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ui"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ui&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            1 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>react</category>
      <category>showdev</category>
      <category>tailwindcss</category>
      <category>ui</category>
    </item>
    <item>
      <title>MQTT Explorer - VSCode Extension</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Mon, 23 Mar 2026 14:30:49 +0000</pubDate>
      <link>https://forem.com/exalandapp/mqtt-explorer-vscode-extension-4b3e</link>
      <guid>https://forem.com/exalandapp/mqtt-explorer-vscode-extension-4b3e</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=Exaland.mqtt-explorer-vscode" rel="noopener noreferrer"&gt;MQTT Explorer (VS Code Extension)&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://freeimage.host/i/qgRBv44" rel="noopener noreferrer"&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%2Fzrxsx3ods9j6n6biu71s.png" alt="qgRBv44.md.png" width="500" height="282"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://freeimage.host/i/qgRBkGf" rel="noopener noreferrer"&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%2F9a4ghrym4q9m8qmqqogu.png" alt="qgRBkGf.md.png" width="500" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Exaland.mqtt-explorer-vscode" rel="noopener noreferrer"&gt;This extension adds an MQTT view to VS Code:&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connection to an MQTT broker&lt;/li&gt;
&lt;li&gt;Saveable connection profiles&lt;/li&gt;
&lt;li&gt;Automatic subscription to &lt;code&gt;#&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Topic filtering&lt;/li&gt;
&lt;li&gt;Topic tree navigation&lt;/li&gt;
&lt;li&gt;Inspection of the last message received on a topic&lt;/li&gt;
&lt;li&gt;Live panel to follow a topic in real time&lt;/li&gt;
&lt;li&gt;Posting messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the &lt;strong&gt;MQTT Explorer&lt;/strong&gt; view in the file explorer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the &lt;strong&gt;MQTT Explorer: Connect&lt;/strong&gt; command.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Orders
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Connect&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Open Connection Manager&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Connect Profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Save Connection Profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Delete Connection Profile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Disconnect&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Publish Message&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Inspect Message&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Copy Topic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Set Topic Filter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Clear Topic Filter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT Explorer: Open Live Topic&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Supported protocols: &lt;code&gt;mqtt&lt;/code&gt;, &lt;code&gt;mqtts&lt;/code&gt;, &lt;code&gt;ws&lt;/code&gt;, &lt;code&gt;wss&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The extension displays the last payload seen for each topic.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vscode</category>
      <category>mqtt</category>
    </item>
    <item>
      <title>New Library for React Design</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Sun, 22 Feb 2026 12:37:31 +0000</pubDate>
      <link>https://forem.com/exalandapp/new-library-for-react-design-19ki</link>
      <guid>https://forem.com/exalandapp/new-library-for-react-design-19ki</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/exalandapp" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F3660649%2F9420ca94-df9b-4b63-8dd0-effd9e460ff4.png" alt="exalandapp"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;react-text-underline Premium highlighting &amp;amp; underlining components for React.&lt;/h2&gt;
      &lt;h3&gt;Exaland App ・ Feb 18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#react&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tailwindcss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#ui&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>react</category>
      <category>showdev</category>
      <category>tailwindcss</category>
      <category>ui</category>
    </item>
    <item>
      <title>react-text-underline Premium highlighting &amp; underlining components for React.</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Wed, 18 Feb 2026 22:57:38 +0000</pubDate>
      <link>https://forem.com/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k</link>
      <guid>https://forem.com/exalandapp/react-text-underline-premium-highlighting-underlining-components-for-react-1o7k</guid>
      <description>&lt;h2&gt;
  
  
  react-text-underline
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Author: Exaland Concept - Alexandre MAGNIER&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Premium highlighting &amp;amp; underlining components for React.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Demonstration
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://exaland.github.io/react-text-underline/" rel="noopener noreferrer"&gt;Online Demonstration&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;8 animated variants: &lt;strong&gt;marker&lt;/strong&gt;, &lt;strong&gt;brushstroke&lt;/strong&gt;, &lt;strong&gt;gradient&lt;/strong&gt;, &lt;strong&gt;slide&lt;/strong&gt;, &lt;strong&gt;glow&lt;/strong&gt;, &lt;strong&gt;scratch&lt;/strong&gt;, &lt;strong&gt;double&lt;/strong&gt;, &lt;strong&gt;wave&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;react-text-underline
&lt;span class="c"&gt;# or&lt;/span&gt;
yarn add react-text-underline
&lt;span class="c"&gt;# or&lt;/span&gt;
pnpm add react-text-underline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;This component uses Tailwind CSS classes. Make sure Tailwind is configured in your project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;TextHighlight&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-text-underline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"marker"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"yellow"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

express delivery
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Variants
&lt;/h2&gt;

&lt;p&gt;| Variant | Description |&lt;/p&gt;

&lt;p&gt;|----------------|-------------------------------------------|&lt;br&gt;
| &lt;code&gt;marker&lt;/code&gt; | Fluorescent marker on hover |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;brushstroke&lt;/code&gt; | SVG brush stroke under text |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;gradient&lt;/code&gt; | Animated gradient underline on hover |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;slide&lt;/code&gt; | Colored background that slides from the left |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;glow&lt;/code&gt; | Glowing text with colored halo |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;scratch&lt;/code&gt; | Irregular pencil stroke |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;double&lt;/code&gt; | Elegant double line |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;wave&lt;/code&gt; | SVG wavy underline |&lt;/p&gt;

&lt;h2&gt;
  
  
  Available Colors
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;yellow&lt;/code&gt; · &lt;code&gt;cyan&lt;/code&gt; · &lt;code&gt;green&lt;/code&gt; · &lt;code&gt;pink&lt;/code&gt; · &lt;code&gt;orange&lt;/code&gt; · &lt;code&gt;purple&lt;/code&gt; · &lt;code&gt;blue&lt;/code&gt; · &lt;code&gt;red&lt;/code&gt; · &lt;code&gt;neonCyan&lt;/code&gt; · &lt;code&gt;neonPurple&lt;/code&gt; · &lt;code&gt;neonGreen&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Props
&lt;/h2&gt;

&lt;p&gt;| Prop | Type | Default | Description |&lt;/p&gt;

&lt;p&gt;|-------------|--------------------|------------|--------------------------------------|&lt;br&gt;
| &lt;code&gt;variant&lt;/code&gt; | &lt;code&gt;HighlightVariant&lt;/code&gt; | &lt;code&gt;'marker'&lt;/code&gt; | Highlight Style |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;color&lt;/code&gt; | &lt;code&gt;HighlightColor&lt;/code&gt; | &lt;code&gt;'yellow'&lt;/code&gt; | Effect Color |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;animate&lt;/code&gt; | &lt;code&gt;boolean&lt;/code&gt; | &lt;code&gt;true&lt;/code&gt; | Enables hover animation |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;className&lt;/code&gt; | &lt;code&gt;string&lt;/code&gt; | &lt;code&gt;''&lt;/code&gt; | Additional CSS Classes |&lt;/p&gt;

&lt;p&gt;| &lt;code&gt;children&lt;/code&gt; | &lt;code&gt;ReactNode&lt;/code&gt; | — | Text to Highlight |&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Permanent Brushstroke (no hover)&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"brushstroke"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"cyan"&lt;/span&gt; &lt;span class="na"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
mobile applications
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Gradient Underline on Hover&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"gradient"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"purple"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

Discover
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Sliding Background&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"slide"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"green"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

proven
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Neon Glow Text&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"glow"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"neonCyan"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
BRAND NAME
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Permanent Pencil Line&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"scratch"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"orange"&lt;/span&gt; &lt;span class="na"&gt;animate&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
custom
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Double Line&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"double"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"pink"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
expertise
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="c1"&gt;// Wavy Underline&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt; &lt;span class="na"&gt;variant&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"wave"&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"blue"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
solutions turnkey
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;TextHighlight&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Build
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT&lt;/p&gt;

</description>
      <category>react</category>
      <category>showdev</category>
      <category>tailwindcss</category>
      <category>ui</category>
    </item>
    <item>
      <title>EXACountryPicker is a country picker controller for iOS13+ with an option to search</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Tue, 17 Feb 2026 08:03:35 +0000</pubDate>
      <link>https://forem.com/exalandapp/exacountrypicker-is-a-country-picker-controller-for-ios13-with-an-option-to-search-1ohb</link>
      <guid>https://forem.com/exalandapp/exacountrypicker-is-a-country-picker-controller-for-ios13-with-an-option-to-search-1ohb</guid>
      <description>&lt;p&gt;&lt;strong&gt;EXACountryPicker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;EXACountryPicker is a country picker controller for iOS13+ with an option to search. The list of countries is based on the ISO 3166 country code standard (&lt;a href="http://en.wikipedia.org/wiki/ISO_3166-1" rel="noopener noreferrer"&gt;http://en.wikipedia.org/wiki/ISO_3166-1&lt;/a&gt;). Also and the library includes a set of 250 public domain flag images.&lt;/p&gt;

&lt;p&gt;The picker provides:&lt;/p&gt;

&lt;p&gt;Country Names&lt;br&gt;
Country codes - ISO 3166&lt;br&gt;
International Dialing Codes&lt;br&gt;
Flags&lt;br&gt;
New (Design + “Smart” features)&lt;/p&gt;

&lt;p&gt;CocoaPods Installation&lt;/p&gt;

&lt;p&gt;&lt;code&gt;use_frameworks!&lt;br&gt;
 pod 'EXACountryPicker', '~&amp;gt; 1.0.3'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Via Package.swift:&lt;br&gt;
Add the following to your Package.swift file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dependencies: [&lt;br&gt;
    .package(url: "https://github.com/exaland/EXACountryPicker.git", from: "1.0.3")&lt;br&gt;
]&lt;/code&gt;&lt;/p&gt;

</description>
      <category>swift</category>
      <category>countrypicker</category>
    </item>
    <item>
      <title>Screenshot Mockup Generator Figma Plugin</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Fri, 30 Jan 2026 13:20:26 +0000</pubDate>
      <link>https://forem.com/exalandapp/screenshot-mockup-generator-figma-plugin-508i</link>
      <guid>https://forem.com/exalandapp/screenshot-mockup-generator-figma-plugin-508i</guid>
      <description>&lt;p&gt;Screenshot Mockup Generator Figma Plugin&lt;/p&gt;

&lt;p&gt;Figma plugin to automatically &lt;strong&gt;generate device mockups&lt;/strong&gt; (iPhone, iPad, MacBook, etc.) from your Figma screens and frames.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.figma.com/community/plugin/1598169768783446662/screenshot-fit-mockup-generator-pro" rel="noopener noreferrer"&gt;Download Plugin Now &lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>VSCode Database Extension 🚀</title>
      <dc:creator>Exaland App</dc:creator>
      <pubDate>Mon, 19 Jan 2026 21:44:43 +0000</pubDate>
      <link>https://forem.com/exalandapp/vscode-database-extension-495k</link>
      <guid>https://forem.com/exalandapp/vscode-database-extension-495k</guid>
      <description>&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Exaland.database-pilot" rel="noopener noreferrer"&gt;Database Pilot&lt;br&gt;
&lt;/a&gt;This repository contains the public source code.&lt;br&gt;
The PRO Version are Available in Extra just BuymeCoffee for get it&lt;/p&gt;

&lt;p&gt;`&lt;a href="https://www.buymeacoffee.com/exaland" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fdefault-orange.png" alt="Buy Me A Coffee" width="434" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This project is a database client for Visual Studio Code, supporting the management MySQL/MariaDB, PostgreSQL, SQLite, Redis, ClickHouse, 达梦, and ElasticSearch, and works as an SSH client, boost your maximum productivity!&lt;/p&gt;

&lt;p&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%2Foevwt9o1td6uhvhdea3n.jpg" 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%2Foevwt9o1td6uhvhdea3n.jpg" alt=" " width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Experimental: Firestore (Firebase) browsing support has been added to the NoSQL view (collections and first 50 documents).&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
