npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

luca-chatbot-embed

v1.0.0

Published

Luca AI Chatbot - Non-intrusive popup widget for websites

Readme

Luca AI Chatbot

A modern, responsive AI chatbot with dark/light mode support, designed for seamless integration into websites.

🚀 Features

  • Modern UI/UX with smooth animations and transitions
  • Dark/Light Mode toggle with persistent preferences
  • Responsive Design that works on all devices
  • Accessibility compliant with proper contrast ratios
  • Performance Optimized with 60fps animations
  • Easy Integration for embedding in any website

📦 Deployment to Netlify

Option 1: Drag & Drop (Easiest)

  1. Go to netlify.com
  2. Sign up/login to your account
  3. Drag and drop the entire project folder to the Netlify dashboard
  4. Your site will be deployed automatically!

Option 2: Git Integration

  1. Push your code to GitHub/GitLab
  2. Connect your repository to Netlify
  3. Deploy automatically on every push

🔗 Embedding in Framer Website

Method 1: iFrame Embed (Recommended)

Add this code to your Framer website:

<iframe 
  src="YOUR_NETLIFY_URL" 
  style="
    position: fixed;
    bottom: 20px;
    right: 20px;
    width: 100%;
    height: 100%;
    border: none;
    z-index: 9999;
    pointer-events: none;
  "
  allow="microphone"
  title="Luca AI Assistant"
></iframe>

Method 2: Direct Script Embed

Add this script to your Framer website's HTML:

<script>
  // Create chatbot container
  const chatbotContainer = document.createElement('div');
  chatbotContainer.id = 'luca-chatbot-container';
  chatbotContainer.style.cssText = `
    position: fixed;
    bottom: 0;
    right: 0;
    width: 100%;
    height: 100%;
    z-index: 9999;
    pointer-events: none;
  `;
  document.body.appendChild(chatbotContainer);

  // Load chatbot
  const iframe = document.createElement('iframe');
  iframe.src = 'YOUR_NETLIFY_URL';
  iframe.style.cssText = `
    width: 100%;
    height: 100%;
    border: none;
    pointer-events: auto;
  `;
  iframe.allow = 'microphone';
  iframe.title = 'Luca AI Assistant';
  
  chatbotContainer.appendChild(iframe);
</script>

⚙️ Configuration

Customizing the Chatbot

  • Colors: Modify CSS variables in style.css
  • API Key: Update the OpenAI API key in script.js
  • Assistant ID: Change the assistant ID in script.js

Environment Variables (Optional)

For production, consider using environment variables:

// In script.js, replace the hardcoded API key with:
const API_KEY = process.env.OPENAI_API_KEY || "your-api-key";

🎨 Customization

Changing Colors

Edit the CSS variables in style.css:

:root {
  --accent-primary: #512feb;    /* Main purple */
  --accent-secondary: #6a5acd;  /* Secondary purple */
  --accent-hover: #4a1fd1;      /* Hover state */
}

Modifying Animations

Adjust animation timing and easing in style.css:

transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);

🔧 Troubleshooting

Common Issues

  1. Chatbot not appearing: Check z-index and pointer-events
  2. API errors: Verify your OpenAI API key is valid
  3. Styling conflicts: Ensure no CSS conflicts with your main site

Performance Tips

  • Use the iframe method for better isolation
  • Consider lazy loading for better initial page load
  • Test on different devices and browsers

📱 Mobile Optimization

The chatbot is fully responsive and optimized for:

  • ✅ iOS Safari
  • ✅ Android Chrome
  • ✅ All modern browsers
  • ✅ Touch interactions

🔒 Security

  • API calls are made directly from the client
  • Consider implementing a backend proxy for production
  • Use environment variables for sensitive data

📄 License

This project is open source and available under the MIT License.

🤝 Support

For issues or questions:

  1. Check the troubleshooting section
  2. Review the code comments
  3. Test in different environments

Ready to deploy! 🚀