<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/blog/rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Christophe Avonture &#x2014; Component / UI</title>
        <link>https://www.avonture.be/blog/tags/component</link>
        <description>Creation and management of React or Docusaurus UI components.</description>
        <lastBuildDate>Thu, 29 Oct 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Let Readers Flag Issues — A Multi-Type Feedback Widget for Docusaurus]]></title>
            <link>https://www.avonture.be/blog/docusaurus-typo-report-component</link>
            <guid isPermaLink="false">/blog/docusaurus-typo-report-component</guid>
            <pubDate>Thu, 29 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/docusaurus_typos.webp" alt="Let Readers Flag Issues — A Multi-Type Feedback Widget for Docusaurus" style="display:block;max-width:100%;height:auto;">Build a secure, SSR-safe reader-feedback widget for your Docusaurus blog — text selection, 4 feedback types, PHP API with HMAC nonce, rate limiting, deduplication, admin dashboard, and email notifications.]]></description>
            <author>Christophe</author>
            <category>docusaurus</category>
            <category>component</category>
            <category>php</category>
            <category>react</category>
            <category>security</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/docusaurus_typos.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator></item>
        <item>
            <title><![CDATA[Drawing a Map of My Own Blog]]></title>
            <link>https://www.avonture.be/blog/docusaurus-blog-map</link>
            <guid isPermaLink="false">/blog/docusaurus-blog-map</guid>
            <pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/post_mindmaps.webp" alt="Drawing a Map of My Own Blog" style="display:block;max-width:100%;height:auto;">Build an interactive map of your whole Docusaurus corpus — every article as a bubble wearing the site's mascot, sized by how many other posts link to it, positioned by a force-directed layout that runs at build time in Node so the browser never ships d3-force. Includes the plugin, the canvas component, and the plain-list fallback that keeps the page usable with JavaScript disabled.]]></description>
            <author>Christophe</author>
            <author>Claude Code</author>
            <category>docusaurus</category>
            <category>react</category>
            <category>component</category>
            <category>nodejs</category>
            <category>doc-as-code</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/post_mindmaps.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator><dc:creator><![CDATA[Claude Code]]></dc:creator></item>
        <item>
            <title><![CDATA[The Third Door: A Floating Chat Bubble, and the Feature Nobody Could Find]]></title>
            <link>https://www.avonture.be/blog/docusaurus-ask-my-blog-bubble</link>
            <guid isPermaLink="false">/blog/docusaurus-ask-my-blog-bubble</guid>
            <pubDate>Mon, 05 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/ask-my-blog-chatbox.webp" alt="The Third Door: A Floating Chat Bubble, and the Feature Nobody Could Find" style="display:block;max-width:100%;height:auto;">A feature your visitors cannot find does not exist. This article adds a floating "Ask my blog" bubble to a Docusaurus site — a third entry point into the same question index, and the first one that needs no prior knowledge. Includes the overlay mutual-exclusion trick that keeps two independent floating dialogs from ever opening at once.]]></description>
            <author>Christophe</author>
            <author>Claude Code</author>
            <category>docusaurus</category>
            <category>react</category>
            <category>component</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/ask-my-blog-chatbox.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator><dc:creator><![CDATA[Claude Code]]></dc:creator></item>
        <item>
            <title><![CDATA[Ask My Blog: Turning 259 Articles Into 2,160 Searchable Questions]]></title>
            <link>https://www.avonture.be/blog/docusaurus-ask-my-blog</link>
            <guid isPermaLink="false">/blog/docusaurus-ask-my-blog</guid>
            <pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/ask-my-blog.webp" alt="Ask My Blog: Turning 259 Articles Into 2,160 Searchable Questions" style="display:block;max-width:100%;height:auto;">A local LLM reads every article on your blog and writes the questions a developer would actually type into a search bar, each one mapped to the exact heading that answers it. The result is a build-time question index searched with plain BM25 in the browser — no embeddings, no API key, no vector database. Full pipeline, plugin and component included.]]></description>
            <author>Christophe</author>
            <author>Claude Code</author>
            <category>docusaurus</category>
            <category>ai</category>
            <category>ollama</category>
            <category>react</category>
            <category>component</category>
            <category>nodejs</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/ask-my-blog.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator><dc:creator><![CDATA[Claude Code]]></dc:creator></item>
        <item>
            <title><![CDATA[Add a "Copy as Markdown" Button to Your Docusaurus Blog]]></title>
            <link>https://www.avonture.be/blog/docusaurus-copy-as-markdown</link>
            <guid isPermaLink="false">/blog/docusaurus-copy-as-markdown</guid>
            <pubDate>Thu, 10 Sep 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/copy-as-markdown.webp" alt="Add a "Copy as Markdown" Button to Your Docusaurus Blog" style="display:block;max-width:100%;height:auto;">Build a "Copy as Markdown" button and a "View raw" link for your Docusaurus blog posts — a build-time plugin that writes a plain-Markdown mirror next to every article, plus the tiny React component that fetches it and copies it to the clipboard. Full source included.]]></description>
            <author>Christophe</author>
            <category>docusaurus</category>
            <category>markdown</category>
            <category>react</category>
            <category>component</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/copy-as-markdown.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator></item>
        <item>
            <title><![CDATA[Shake Your Phone, Startle the Meerkat]]></title>
            <link>https://www.avonture.be/blog/docusaurus-shake-easter-egg</link>
            <guid isPermaLink="false">/blog/docusaurus-shake-easter-egg</guid>
            <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/shaked_meerkat.webp" alt="Shake Your Phone, Startle the Meerkat" style="display:block;max-width:100%;height:auto;">A ninth easter egg for this blog, built for readers on a phone: shake it — in Chrome or in the installed PWA — and the meerkat mascot takes over the full screen, startled, for about two seconds. Covers the devicemotion 'jerk' math behind shake detection, the three-phase overlay animation, how to test it from a desktop DevTools console with no accelerometer at all, and a real bug caught along the way — an AI image generator that drew a transparent-background placeholder as literal opaque pixels instead of real alpha.]]></description>
            <author>Christophe</author>
            <author>Claude Code</author>
            <category>docusaurus</category>
            <category>react</category>
            <category>component</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/shaked_meerkat.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator><dc:creator><![CDATA[Claude Code]]></dc:creator></item>
        <item>
            <title><![CDATA[Adding Reader Reactions to Your Docusaurus Blog]]></title>
            <link>https://www.avonture.be/blog/docusaurus-reactions</link>
            <guid isPermaLink="false">/blog/docusaurus-reactions</guid>
            <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/docusaurus_like_button.webp" alt="Adding Reader Reactions to Your Docusaurus Blog" style="display:block;max-width:100%;height:auto;">Build a fully working "Was this article helpful?" widget for your Docusaurus blog. Step-by-step guide covering the PHP backend, React component, CSS module, Docusaurus swizzle, and an admin dashboard — everything you need to reproduce it from scratch.]]></description>
            <author>Christophe</author>
            <category>docusaurus</category>
            <category>php</category>
            <category>react</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/docusaurus_like_button.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator></item>
        <item>
            <title><![CDATA[AI-Powered Code Tooltips in Docusaurus — Explain Like I'm Five]]></title>
            <link>https://www.avonture.be/blog/docusaurus-eli5-snippet-tooltips</link>
            <guid isPermaLink="false">/blog/docusaurus-eli5-snippet-tooltips</guid>
            <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/ai_snippets.webp" alt="AI-Powered Code Tooltips in Docusaurus — Explain Like I'm Five" style="display:block;max-width:100%;height:auto;">Add hover tooltips to tricky code lines in your Docusaurus blog — powered by Claude, generated at build time, zero browser latency. Covers the remark plugin, the React renderer, and the CLI script.]]></description>
            <author>Christophe</author>
            <category>docusaurus</category>
            <category>component</category>
            <category>react</category>
            <category>ai</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/ai_snippets.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator></item>
        <item>
            <title><![CDATA[Meerkat Mischief: Sprinkling Easter Eggs Across my Blog]]></title>
            <link>https://www.avonture.be/blog/docusaurus-easter-eggs</link>
            <guid isPermaLink="false">/blog/docusaurus-easter-eggs</guid>
            <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/easter_eggs.webp" alt="Meerkat Mischief: Sprinkling Easter Eggs Across my Blog" style="display:block;max-width:100%;height:auto;">A tour of eight small, discoverable easter eggs added to this Docusaurus blog — a hidden ASCII-art meerkat in the page source, a Konami-code sprite run, a console.log wink, a tab-away favicon swap, rotating 404 messages, a hidden sitemap comment and more — plus the real bugs (key-repeat, an AZERTY keyboard mismatch, a wrong emoji, a postBuild race condition, a blurry favicon) caught along the way.]]></description>
            <author>Christophe</author>
            <author>Claude Code</author>
            <category>docusaurus</category>
            <category>react</category>
            <category>component</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/easter_eggs.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator><dc:creator><![CDATA[Claude Code]]></dc:creator></item>
        <item>
            <title><![CDATA[Bring Your CLI Tutorials to Life with a Typewriter Terminal]]></title>
            <link>https://www.avonture.be/blog/docusaurus-terminal-typewriter</link>
            <guid isPermaLink="false">/blog/docusaurus-terminal-typewriter</guid>
            <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[<img src="https://www.avonture.be/img/v2/typewriter_terminal.webp" alt="Bring Your CLI Tutorials to Life with a Typewriter Terminal" style="display:block;max-width:100%;height:auto;">Add a typewriter animation to your Docusaurus Terminal component — command lines typed character-by-character, output lines appearing in sequence, with a blinking cursor and a click-to-skip escape hatch. Three new props, zero breaking changes.]]></description>
            <author>Christophe</author>
            <category>component</category>
            <category>docusaurus</category>
            <category>react</category>
            <enclosure length="0" type="image/webp" url="https://www.avonture.be/img/v2/typewriter_terminal.webp"/>
        <dc:creator><![CDATA[Christophe]]></dc:creator></item>
    </channel>
</rss>