This repository provides three versions of the "Made By" module.
- Web Component: Best for any website - Hugo, Jekyll, WordPress, plain HTML, or even React/Vue. Most portable option.
- React Component: Best for Next.js, Remix, Vite, or any React app with Tailwind CSS.
- Universal HTML/CSS/JS: Legacy version for static sites.
The most portable option. Works anywhere with a single <script> tag.
- Shadow DOM encapsulation - No CSS conflicts with your site
- Glassmorphism effect - Blur + transparency
- Shine animation - Sweep effect on the CTA button
- Contact obfuscation - Email and Telegram handles are not exposed in HTML
- Auto source tracking - Automatically detects hostname for analytics
- Dark mode - Auto-detects system preference or set manually
<!-- Include the script (in head or before </body>) -->
<script src="path/to/made-by-widget.js"></script>
<!-- Use the component -->
<made-by-widget
name="Rémi"
linkedin="remivalade"
twitter="remivalade"
telegram="remivalade"
email-user="remi.valade"
email-domain="gmail.com"
></made-by-widget>| Attribute | Default | Description |
|---|---|---|
name |
"Rémi" | Display name in greeting |
subtitle |
"Senior Marketer who likes to do things" | Tagline text |
label |
"Let's talk" | Text shown in collapsed state |
photo |
(default image) | Profile image URL |
linkedin |
- | LinkedIn username |
twitter |
- | X/Twitter username |
telegram |
- | Telegram handle (obfuscated) |
email-user |
- | Email username part (obfuscated) |
email-domain |
- | Email domain part (obfuscated) |
cta-text |
"Send an email" | CTA button text |
source |
(auto: hostname) | Custom source for tracking |
dark |
(auto-detects) | Force dark mode |
<!-- In layouts/partials/footer.html or layouts/_default/baseof.html -->
<script src="{{ "js/made-by-widget.js" | relURL }}"></script>
<made-by-widget
name="Rémi"
linkedin="remivalade"
twitter="remivalade"
telegram="remivalade"
email-user="remi.valade"
email-domain="gmail.com"
source="hugo-blog"
></made-by-widget>- Copy
universal/made-by-widget.jsto your static assets folder - Reference it with a
<script>tag - Add the
<made-by-widget>element anywhere in your HTML
Host the JS file on any CDN (jsDelivr, unpkg, Cloudflare, your own server) and reference it from all your sites:
<script src="https://your-cdn.com/made-by-widget.js"></script>Email and Telegram handles are never exposed in the HTML source. They are constructed in JavaScript only when the user clicks, preventing bot scraping.
Perfect for modern React applications using Tailwind CSS.
- Copy
frontend/src/components/MadeBy.jsxinto your project. - Import it:
import MadeBy from './components/MadeBy'; // ... inside your component <MadeBy isDarkMode={true} />
For static sites where you prefer inline HTML over a Web Component.
- Create a new partial file:
layouts/partials/made-by.html. - Copy the content of
universal/made-by.htmlinto that file. - Include it in your footer template (e.g.,
layouts/partials/footer.html):{{ partial "made-by.html" . }}
Simply copy the entire content of universal/made-by.html and paste it just before the closing </body> tag of your website.
- Dark Mode: The script automatically detects system preference. To force dark mode, add the class
darkto the outer div:<div id="made-by-component" class="made-by-component dark">
- Links/Images: Edit the HTML directly to change the profile picture, name, or social links.
This version does not include the shine animation or contact obfuscation. Consider using the Web Component version instead.