<?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: VIDALLET</title>
    <description>The latest articles on DEV Community by VIDALLET (@jnv-33).</description>
    <link>https://dev.to/jnv-33</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091803%2F0f819117-5419-4418-a001-5f8aa6efde24.jpg</url>
      <title>DEV Community: VIDALLET</title>
      <link>https://dev.to/jnv-33</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jnv-33"/>
    <language>en</language>
    <item>
      <title>17 free, dependency-free JS/PHP components for your next project</title>
      <dc:creator>VIDALLET</dc:creator>
      <pubDate>Mon, 24 Aug 2026 08:07:17 +0000</pubDate>
      <link>https://dev.to/jnv-33/17-free-dependency-free-jsphp-components-for-your-next-project-31g6</link>
      <guid>https://dev.to/jnv-33/17-free-dependency-free-jsphp-components-for-your-next-project-31g6</guid>
      <description>&lt;p&gt;I maintain a small library of standalone components: no npm, no bundler, no framework. Each one is a single file that encapsulates its own CSS (and SVG icons where relevant), so you just include the file, instantiate the class, and it works. 16 are pure JavaScript; one, ac_pdf, is PHP and wraps FPDF as its only dependency.&lt;/p&gt;

&lt;p&gt;Here's the full list, all free and free to use in your own projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ac_notif_modale: toast notifications and confirmation modals (info, success, warning, error)&lt;/li&gt;
&lt;li&gt;ac_note_etoiles: turns a number input into a rating widget (stars, hearts, or smileys)&lt;/li&gt;
&lt;li&gt;ac_slider: enriched range slider with gradient or segment colors and a value bubble&lt;/li&gt;
&lt;li&gt;ac_progression: animated progress bar with automatic color thresholds and a shimmer effect&lt;/li&gt;
&lt;li&gt;ac_tags: turns a text input into a tag entry field, with optional autocomplete&lt;/li&gt;
&lt;li&gt;ac_telephone_multipays: international phone field with country picker, flag emoji, and auto formatting&lt;/li&gt;
&lt;li&gt;ac_signature: canvas-based signature pad, captured as base64 PNG&lt;/li&gt;
&lt;li&gt;ac_video_url: paste a YouTube or Vimeo URL, get an automatic embedded preview&lt;/li&gt;
&lt;li&gt;ac_fichier_upload: drag-and-drop file zone with previews, type/size validation, optional image resizing&lt;/li&gt;
&lt;li&gt;ac_picture_select: enriched select with images, badges, and built-in search&lt;/li&gt;
&lt;li&gt;ac_big_select: for selects with thousands of options, on-demand AJAX search instead of preloading everything&lt;/li&gt;
&lt;li&gt;ac_graphique: dependency-free SVG charts (bar, line, pie), with hover tooltips and PNG export&lt;/li&gt;
&lt;li&gt;ac_timeline: vertical or horizontal timeline with typed icons and scroll animation&lt;/li&gt;
&lt;li&gt;ac_carte: interactive map (loads Leaflet automatically), with geocoding and multi-marker modes&lt;/li&gt;
&lt;li&gt;ac_agenda: full calendar with month/week/day views, click-to-create, drag-and-drop to move or resize&lt;/li&gt;
&lt;li&gt;ac_onglets: turns existing HTML blocks into accessible tabs, any content, any layout&lt;/li&gt;
&lt;li&gt;ac_pdf: server-side PDF generation (certificates, reports, attendance sheets), wrapping FPDF&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick example (ac_graphique)&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
&lt;code&gt;const chart = new AcGraphique('#my-chart', { type: 'barres' });&lt;br&gt;
chart.setDonnees([...]);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;One thing worth flagging across the whole library: method and option names are in French (setDonnees, barres for bars, position_verticale, and so on), since these components were originally built for French-speaking clients. The behavior is standard, only the vocabulary isn't in English.&lt;/p&gt;

&lt;p&gt;Full demos and docs: &lt;a href="https://artisan-code.fr/outils.php" rel="noopener noreferrer"&gt;https://artisan-code.fr/outils.php&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also maintain a few premium components in the same spirit (ac_sidebar, ac_datagrid, ac_datagrid_pro, ac_text_to_html) if you need something heavier. ac_datagrid and ac_datagrid_pro share the same engine, tested at 6 million rows with solid performance.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>php</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built a dependency-free sidebar with drag-and-drop and magnetic snapping , in vanilla JS</title>
      <dc:creator>VIDALLET</dc:creator>
      <pubDate>Mon, 24 Aug 2026 07:48:49 +0000</pubDate>
      <link>https://dev.to/jnv-33/i-built-a-dependency-free-sidebar-with-drag-and-drop-and-magnetic-snapping-in-vanilla-js-17fb</link>
      <guid>https://dev.to/jnv-33/i-built-a-dependency-free-sidebar-with-drag-and-drop-and-magnetic-snapping-in-vanilla-js-17fb</guid>
      <description>&lt;p&gt;Most sidebar components pull in a framework, a build step, or at least a CSS library. ac_sidebar doesn't. It's a single JavaScript class, no npm, no bundler, no external dependency, with its own CSS and SVG icon set baked in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two menu levels (menu / submenu), recursive structure&lt;br&gt;
Role-based filtering (1 to 5, lower means more privileges), with menus auto-hiding when they end up empty&lt;br&gt;
Five positions: left, right, top, bottom, or free. In free mode, you can drag the sidebar anywhere, with automatic magnetic snapping to screen edges&lt;br&gt;
Collapses to an icon rail, or hides behind a single burger button&lt;br&gt;
Counter badges per entry, multiple instances on the same page, state persisted via localStorage (optional)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
&lt;code&gt;const sb = new AcSidebar('#my-sidebar', { /* config */ });&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Or load config from an external JSON file:&lt;/p&gt;

&lt;p&gt;javascript&lt;br&gt;
&lt;code&gt;const sb = await AcSidebar.fromJson('#my-sidebar', '/config/sidebar.json');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A config example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One thing to flag: the config keys and values are in French (the class was originally built for French-speaking clients), so you'll see things like position: "gauche" (left) or theme: "clair" (light) rather than English terms.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;json&lt;br&gt;
{&lt;br&gt;
  "position": "gauche",&lt;br&gt;
  "theme": "clair",&lt;br&gt;
  "masquable": true,&lt;br&gt;
  "menu": [&lt;br&gt;
    { "libelle": "Dashboard", "icone": "grille", "lien": "/dashboard" },&lt;br&gt;
    {&lt;br&gt;
      "libelle": "Users",&lt;br&gt;
      "icone": "groupe",&lt;br&gt;
      "role": 2,&lt;br&gt;
      "sousMenu": [&lt;br&gt;
        { "libelle": "List", "icone": "liste", "lien": "/users" },&lt;br&gt;
        { "libelle": "Roles", "icone": "cle", "lien": "/roles", "role": 1 }&lt;br&gt;
      ]&lt;br&gt;
    }&lt;br&gt;
  ]&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Live demo: &lt;a href="https://artisan-code.fr/ac_sidebar.php" rel="noopener noreferrer"&gt;https://artisan-code.fr/ac_sidebar.php&lt;/a&gt;&lt;br&gt;
)&lt;br&gt;
ac_sidebar is part of a small catalog of standalone, dependency-free JS/PHP classes I maintain at artisan-code.fr, built for projects where a full framework would be overkill.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>ui</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
