<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Kat </title>
    <description>The latest articles on DEV Community by John Kat  (@johnkat_mj).</description>
    <link>https://dev.to/johnkat_mj</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%2F886091%2F36b112d9-98d6-4ee5-94c0-0f52069021bd.jpg</url>
      <title>DEV Community: John Kat </title>
      <link>https://dev.to/johnkat_mj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnkat_mj"/>
    <language>en</language>
    <item>
      <title>Introducing Flexiwind (Beta): a composable UI system for Laravel &amp; Livewire</title>
      <dc:creator>John Kat </dc:creator>
      <pubDate>Thu, 05 Feb 2026 11:24:37 +0000</pubDate>
      <link>https://dev.to/unoforge/introducing-flexiwind-beta-a-composable-ui-system-for-laravel-livewire-144a</link>
      <guid>https://dev.to/unoforge/introducing-flexiwind-beta-a-composable-ui-system-for-laravel-livewire-144a</guid>
      <description>&lt;p&gt;Today, I’m excited to share the &lt;strong&gt;beta release of Flexiwind&lt;/strong&gt; — a composable UI system built for &lt;strong&gt;Laravel Blade and Livewire&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you like the philosophy behind &lt;em&gt;shadcn/ui&lt;/em&gt; but live in the Laravel ecosystem, Flexiwind might feel very familiar — yet intentionally different.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Flexiwind?
&lt;/h2&gt;

&lt;p&gt;Flexiwind is &lt;strong&gt;not&lt;/strong&gt; a traditional component library.&lt;/p&gt;

&lt;p&gt;You don’t install it and import components from &lt;code&gt;vendor/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead, Flexiwind gives you &lt;strong&gt;production-ready UI components and blocks that you copy directly into your project&lt;/strong&gt;, so you fully own the code.&lt;/p&gt;

&lt;p&gt;❌ No black box.&lt;br&gt;&lt;br&gt;
❌ No vendor lock-in.&lt;br&gt;&lt;br&gt;
❌ No magic.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Flexiwind?
&lt;/h2&gt;

&lt;p&gt;Most Laravel UI kits fall into one of these traps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hard to customize
&lt;/li&gt;
&lt;li&gt;Too opinionated
&lt;/li&gt;
&lt;li&gt;Abstracted behind APIs you eventually fight
&lt;/li&gt;
&lt;li&gt;Disconnected from how Livewire actually works
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flexiwind takes a different path:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You copy the code. You adapt it. You ship.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal is not to hide complexity — it’s to give you a &lt;strong&gt;clean, extensible starting point&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The workflow is intentionally simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick&lt;/strong&gt; the components or blocks you need
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add&lt;/strong&gt; them to your project (manually or via CLI)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customize&lt;/strong&gt; them like any other Blade or Livewire code
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Laravel Blade&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Livewire&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailwind CSS&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Key ideas behind Flexiwind
&lt;/h2&gt;
&lt;h3&gt;
  
  
  🎨 Full ownership &amp;amp; easy customization
&lt;/h3&gt;

&lt;p&gt;Because components live directly in your codebase, customization is natural.&lt;/p&gt;

&lt;p&gt;Instead of fighting with &lt;code&gt;!important&lt;/code&gt; or overriding utility classes like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;!bg-red-400 !px-6 !rounded-xl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flexiwind relies heavily on &lt;strong&gt;CSS variables&lt;/strong&gt; for theming and variants.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cleaner markup&lt;/li&gt;
&lt;li&gt;predictable customization&lt;/li&gt;
&lt;li&gt;easier brand alignment&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧠 Semantic utilities (without losing flexibility)
&lt;/h3&gt;

&lt;p&gt;Flexiwind introduces &lt;strong&gt;semantic utility classes&lt;/strong&gt; on top of Tailwind.&lt;br&gt;
Instead of long class chains, you can write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-md btn-solid btn-solid-primary"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;separates &lt;strong&gt;structure&lt;/strong&gt; from &lt;strong&gt;variants&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;keeps templates readable&lt;/li&gt;
&lt;li&gt;still allows Tailwind-level control when needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ Interactive, but not heavyweight
&lt;/h3&gt;

&lt;p&gt;For interactivity, Flexiwind relies on its own small ecosystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexilla&lt;/strong&gt; (Vanilla JS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alpine Flexilla&lt;/strong&gt; (Alpine.js)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are &lt;strong&gt;headless UI primitives&lt;/strong&gt; (dropdowns, modals, popovers, PIN inputs, etc.) designed to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modular&lt;/strong&gt; – install only what you use&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Extensible&lt;/strong&gt; – powerful APIs, no rigid behavior&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source&lt;/strong&gt; – inspect, fork, or own the code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No unnecessary JavaScript frameworks.&lt;br&gt;
No hidden coupling.&lt;/p&gt;
&lt;h3&gt;
  
  
  💻 CLI-first experience
&lt;/h3&gt;

&lt;p&gt;Flexiwind ships with a CLI to make adoption frictionless.&lt;/p&gt;

&lt;p&gt;Instead of copy-pasting files manually, you can add components and blocks directly from the registry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flexi add button
flexi add auth/login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI &lt;strong&gt;copies the code into your project&lt;/strong&gt;, so you can modify it freely.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s included in the beta?
&lt;/h2&gt;

&lt;p&gt;The current beta includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core UI components (buttons, modals, dropdowns, alerts, etc.)&lt;/li&gt;
&lt;li&gt;A registry-based system&lt;/li&gt;
&lt;li&gt;CLI tooling&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Base application blocks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login (multiple variants)&lt;/li&gt;
&lt;li&gt;Signup&lt;/li&gt;
&lt;li&gt;Sidebar&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;documentation&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This is the &lt;strong&gt;foundation&lt;/strong&gt;, not the final shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;Flexiwind is just getting started.&lt;/p&gt;

&lt;p&gt;The next steps are focused on real-world Laravel needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Polishing and hardening existing components&lt;/li&gt;
&lt;li&gt;Improving documentation and examples&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Adding &lt;strong&gt;application-level blocks&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;authentication flows&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;li&gt;CRUD patterns&lt;/li&gt;
&lt;li&gt;settings pages&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The long-term goal is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Help Laravel &amp;amp; Livewire developers build real products faster — not just UIs.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Beta means feedback matters
&lt;/h2&gt;

&lt;p&gt;Flexiwind is in beta, and your feedback will directly shape what comes next.&lt;/p&gt;

&lt;p&gt;If you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;build with Laravel &amp;amp; Livewire&lt;/li&gt;
&lt;li&gt;enjoy owning your UI code&lt;/li&gt;
&lt;li&gt;care about long-term maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love for you to try it, break it, and share your thoughts.&lt;/p&gt;

&lt;p&gt;More updates coming soon.&lt;/p&gt;

&lt;p&gt;Github : &lt;a href="https://github.com/unoforge/flexiwind" rel="noopener noreferrer"&gt;Flexiwind&lt;/a&gt;&lt;br&gt;
Live : &lt;a href="https://flexiwind.laravel.cloud/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>livewire</category>
      <category>components</category>
      <category>ui</category>
    </item>
    <item>
      <title>Building Flexilla : Headless Interactive Component Library</title>
      <dc:creator>John Kat </dc:creator>
      <pubDate>Tue, 18 Mar 2025 10:06:46 +0000</pubDate>
      <link>https://dev.to/unoforge/my-journey-to-building-flexilla-headless-interactive-component-library-46gp</link>
      <guid>https://dev.to/unoforge/my-journey-to-building-flexilla-headless-interactive-component-library-46gp</guid>
      <description>&lt;p&gt;The journey of creating my very first JavaScript library has been transformative, helping me grow. How did I get here? Let's start from the beginning.&lt;/p&gt;

&lt;p&gt;After completing the beta versions of &lt;a href="https://uno.unify-ui.dev/" rel="noopener noreferrer"&gt;UnifyUI Blocks&lt;/a&gt; and &lt;a href="https://flexiwind.vercel.app/" rel="noopener noreferrer"&gt;Flexiwind Blocks&lt;/a&gt;, &lt;a href="https://github.com/Tresor-Kasenda" rel="noopener noreferrer"&gt;my friend&lt;/a&gt; and I faced a challenge: adding interactive components like dropdowns, collapses, and tabs.&lt;/p&gt;

&lt;p&gt;Since UnifyUI and Flexiwind are different : one works with UnoCSS and the other with TailwindCSS, we initially wrote separate scripts for each. But it soon became apparent that this was a less-than-ideal solution.&lt;/p&gt;

&lt;p&gt;After studying how &lt;a href="https://preline.co/plugins.html" rel="noopener noreferrer"&gt;Preline&lt;/a&gt; handles interactions with dedicated JavaScript plugins tailored for TailwindCSS, we saw the need for a CSS framework-agnostic solution. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why CSS Framework-Agnostic?
&lt;/h2&gt;

&lt;p&gt;Creating a CSS framework-agnostic library was essential for us because we wanted Flexilla to work seamlessly with &lt;strong&gt;any CSS framework&lt;/strong&gt; or even with &lt;strong&gt;Pure CSS&lt;/strong&gt;. Many developers, including those using &lt;strong&gt;UnoCSS&lt;/strong&gt;, &lt;strong&gt;TailwindCSS&lt;/strong&gt;, or even &lt;strong&gt;Bootstrap&lt;/strong&gt;, should have the flexibility to enhance their components without limitations.&lt;/p&gt;

&lt;p&gt;By making Flexilla independent of a specific framework, we can provide a versatile tool that works for many different types of projects. It also aligns with the work we've already done on UnifyUI and Flexiwind Blocks, where flexibility is key. &lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;Inspired by the &lt;a href="https://preline.co/plugins.html" rel="noopener noreferrer"&gt;Preline&lt;/a&gt; and Flowbite plugin, we decided to create &lt;a href="https://github.com/unify-ui-dev/flexilla" rel="noopener noreferrer"&gt;Flexilla&lt;/a&gt; which is fully open-source .&lt;/p&gt;

&lt;p&gt;Flexilla is a standalone library designed to manage interactions independently, without relying on any specific CSS framework. It offers the flexibility to integrate smoothly with TailwindCSS, UnoCSS, or any other CSS technology.&lt;/p&gt;

&lt;p&gt;Our aim was to enhance components in a way that wasn’t restricted to a particular CSS environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;p&gt;At first, I had no idea where to start. Should I clone Preline and adapt it? No, that wouldn’t have helped me, as my goal was to &lt;strong&gt;learn&lt;/strong&gt; through this project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Organization
&lt;/h3&gt;

&lt;p&gt;In the beginning, my code was a mess: unreadable and hard to follow.&lt;br&gt;&lt;br&gt;
I had a "packages" folder, and it was a disaster! This made it difficult to publish certain packages separately, so I needed a solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
I found an article about &lt;a href="https://lerna.js.org/" rel="noopener noreferrer"&gt;Lerna&lt;/a&gt;, which immediately caught my interest. After a few days of reading documentation and restructuring my code, I had an organization I was proud of. Lerna allowed me to streamline my updates, manage multiple packages in a mono repository, and publish them independently.&lt;/p&gt;
&lt;h3&gt;
  
  
  PopperJS?
&lt;/h3&gt;

&lt;p&gt;Yes, I faced this dilemma: should I use PopperJS or not?&lt;br&gt;&lt;br&gt;
It was a big challenge, but I’ll save that story for a future article.&lt;/p&gt;
&lt;h3&gt;
  
  
  Versioning
&lt;/h3&gt;

&lt;p&gt;This was a major stumbling block. I initially published the library and all its packages with version 1.0.0… and after publishing, I realized there were issues in some packages. So for every fix, I would publish a new version of the library and its packages. Bad idea! Eventually, a friend suggested I read an article about &lt;strong&gt;SEMVER&lt;/strong&gt;, and suddenly, versioning made sense—though I was a bit late to the game.&lt;/p&gt;

&lt;p&gt;That’s how I ended up with the library at version 2.x.x. From that point, I stopped making those mistakes. With Lerna, I no longer have to worry about changing package versions that haven’t been updated; &lt;a href="https://lerna.js.org/" rel="noopener noreferrer"&gt;Lerna&lt;/a&gt; takes care of that for me.&lt;/p&gt;
&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. &lt;strong&gt;CSS Framework Agnosticism&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Flexilla doesn’t rely on any specific CSS framework, making it compatible with &lt;strong&gt;TailwindCSS&lt;/strong&gt;, &lt;strong&gt;UnoCSS&lt;/strong&gt;, or even &lt;strong&gt;plain CSS&lt;/strong&gt;. This flexibility ensures that you can integrate it with your project regardless of the CSS framework you’re using.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. &lt;strong&gt;Modular Components&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Flexilla offers &lt;strong&gt;modular components&lt;/strong&gt; like dropdowns, tabs, and collapses. These components are built to be lightweight and easy to include as needed, so you only add what you’re going to use, which helps with &lt;strong&gt;performance&lt;/strong&gt; and &lt;strong&gt;bundle size&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. &lt;strong&gt;Simple API&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The library features an &lt;strong&gt;easy-to-use API&lt;/strong&gt; that requires minimal configuration. Here’s a simple example of how to set up a dropdown component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&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;Dropdown&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;@flexilla/flexilla&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="nx"&gt;Dropdown&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#myDropdown&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This example shows how you can quickly initialize a dropdown with just a few lines of code, making it highly accessible for developers of all levels.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Headless Architecture&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Inspired by headless UI libraries, Flexilla allows you to &lt;strong&gt;control the styles completely&lt;/strong&gt;, so you’re not limited by predefined designs or themes. This makes it easy to integrate into &lt;strong&gt;custom-styled projects&lt;/strong&gt; and ensures it won’t conflict with existing styles.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;Customizable Events&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Flexilla components come with &lt;strong&gt;customizable events&lt;/strong&gt;. For example, you can add actions to respond to user actions or customize behaviors for specific interactions, like on dropdown open or tab change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myDropdown&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Dropdown&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#myDropdown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;onShow&lt;/span&gt;&lt;span class="p"&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;Dropdown is shown!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;onHide&lt;/span&gt;&lt;span class="p"&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;Dropdown is hidden!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&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;myAccordionEl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#myAccordion&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;myAccordion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Accordion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myAccordionEl&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;myAccordionEl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;change-item&lt;/span&gt;&lt;span class="dl"&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;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="s2"&gt;Accordion item changed&lt;/span&gt;&lt;span class="dl"&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;
  
  
  When and Where to Use the Library?
&lt;/h2&gt;

&lt;p&gt;Use Flexilla when you're working on a project where you don't want to use a JavaScript framework but need interactive components with accessibility in mind. (Recommended: AstroJS, PHP and PHP frameworks, Static Websites)&lt;br&gt;
It can work well with VueJS, but it's not recommended. With ReactJS, don't even try!&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next for Flexilla?
&lt;/h2&gt;

&lt;p&gt;Flexilla will continue to evolve. We plan to add more components, improve the existing ones, and refine the documentation. In addition to existing components, We plan to introduce other common components like notifications and toasts. This will allow Flexilla to support a wider range of interactive needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;According to our needs, Flexilla has proven to be a valuable tool for creating interactive components in my projects.&lt;br&gt;
&lt;strong&gt;Starting out can be scary&lt;/strong&gt;. I was afraid no one would appreciate my work, afraid it wouldn't serve any purpose. But I assure you, not trying is the biggest mistake. Today, I have no regrets about creating this library. It has allowed me to learn so much : code organization, versioning, managing npm packages… Don’t hesitate to share your solution with the world and be open to feedback, whether positive or negative. It will help you grow!&lt;/p&gt;

&lt;p&gt;If you have ideas, suggestions, or code improvements, don’t hesitate to fork the &lt;a href="https://github.com/unoforge/flexilla" rel="noopener noreferrer"&gt;repository&lt;/a&gt;, submit a pull request, or open an issue. Together, we can enhance the library and create a valuable resource for developers everywhere.&lt;/p&gt;

&lt;p&gt;On that note, take care, and don’t forget to check out &lt;a href="https://flexilla-docs.vercel.app/docs/getting-started" rel="noopener noreferrer"&gt;Flexilla&lt;/a&gt; and let me know what you think! &lt;/p&gt;

&lt;p&gt;French Version : coming soon&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>devchallenge</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
