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

collapsedrop

v1.1.0

Published

BYOLLM — Context injection for the AI age. Give users copy-paste context for their favorite LLM.

Downloads

8

Readme

CollapseDrop v1.0.0 - README

BYOLLM - Bring Your Own LLM context injection for static sites

Live Demo Ko-fi License

CollapseDrop Example

🤔 Stop AI making up stuff about your site. Start real conversations!

Users will ask AI about your product anyway. Give them the source of truth instead of letting them get garbage from random web scrapes.

Perfect for complex content:

  • Technical documentation — Let AI explain your API/SDK to newcomers
  • Research papers & whitepapers — Make dense content accessible
  • Legal/compliance docs — Help users understand terms without a lawyer
  • Academic writing — Students/readers can ask questions about your work
  • Open source projects — Help devs understand your codebase
  • Internal wikis — Onboard new team members faster

If someone unfamiliar with your work needs to understand it, CollapseDrop bridges the gap.


✅ See It Live

collapseindex.org - Real-world example of CollapseDrop in action

📁 examples/vanilla.html - See all features: tabs, custom colors, branding, themes & more


⚡ Why CollapseDrop?

The problem:

User: "Hey ChatGPT, what does [your product] do?"
ChatGPT: *hallucinates confidently from 2-year-old blog posts*

The solution:

User: *clicks Copy* → *pastes into ChatGPT* → "What does this do?"
ChatGPT: *actually accurate because YOU provided the context*

BYOLLM vs Traditional Chatbots

| Traditional Chatbot | CollapseDrop (BYOLLM) | |---------------------|----------------------| | 💸 Pay for API calls | ✅ Free forever | | 🖥️ Maintain backend | ✅ Zero infrastructure | | 🔒 Locked to one LLM | ✅ Works with ANY LLM | | 😬 Users don't trust it | ✅ Users trust their own AI | | 📊 You process user data | ✅ Zero data processing | | 📋 GDPR compliance needed | ✅ No data = no GDPR | | 💀 Breaks when API changes | ✅ Works forever |

One-Click vs Select-Drag

| Manual Copy (Select + Drag) | CollapseDrop (One Click) | |-----------------------------|--------------------------| | 🖱️ Click, hold, drag to select | ✅ One tap/click | | 😤 Miss a line? Start over | ✅ Always gets everything | | 📱 Nightmare on mobile | ✅ Works perfectly on mobile | | 🎯 Hope you got it all | ✅ Pre-formatted, ready to paste | | ❓ What do I even copy? | ✅ Context is curated for AI | | 🔄 Repeat for every section | ✅ Tabs organize everything |

Your users shouldn't fight their browser to copy text.

Why Not Browser AI Assistants? (Leo, Aria, etc.)

| Browser AI (Leo, Aria, etc.) | CollapseDrop | |------------------------------|--------------| | 🤷 Grabs whatever it wants from page | ✅ YOU curate the context | | 🔀 Weird formatting breaks context | ✅ Clean, pre-formatted text | | 📄 Forgets context between pages | ✅ User pastes exactly what they need | | 🎰 Hit or miss on complex layouts | ✅ Works on any page structure | | 🔒 Locked to that browser's AI | ✅ Works with ChatGPT, Claude, Grok, anything | | 😵 Struggles with SPAs/dynamic content | ✅ Static text, always reliable |

Browser AI assistants scrape pages blindly. You know your content better! Curate it.


🚀 Quick Start

Option 1: CDN (Easiest)

<!-- Add to your <head> -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/collapsedrop/dist/collapsedrop.css">
<script src="https://cdn.jsdelivr.net/npm/collapsedrop/dist/collapsedrop.js"></script>
<!-- Add anywhere in your page -->
<div data-collapsedrop 
     data-title="Ask AI About Us"
     data-subtitle="Copy and paste into ChatGPT, Claude, or any LLM">
[CONTEXT: You are explaining our product to a potential customer.]

PRODUCT OVERVIEW
================
We help teams collaborate better with real-time tools.

PRICING
• Free: Up to 3 users
• Pro: $10/user/month  
• Enterprise: Contact us

--- ASK ABOUT ---
• Features & integrations
• Pricing & billing
• Technical requirements
</div>

That's it. Widget auto-initializes. Zero config required.

Option 2: npm

npm install collapsedrop
import CollapseDrop from 'collapsedrop';
import 'collapsedrop/dist/collapsedrop.css';

CollapseDrop.init('#my-context', {
  title: 'Ask AI About Our Product',
  theme: 'dark'
});

Option 3: Self-Host

Download collapsedrop.js and collapsedrop.css from the dist folder.


🔌 Integrations

CollapseDrop is vanilla JS — it works everywhere HTML works.

| Platform | How to Use | |----------|------------| | React / Next.js | Use useEffect to call CollapseDrop.init() after mount | | Vue / Nuxt | Call CollapseDrop.init() in onMounted() | | Svelte | Call in onMount() or use action | | Astro | Add script with is:inline, or use in client component | | WordPress | Enqueue scripts, add shortcode or Gutenberg block | | Webflow | Paste into page <head> embed + HTML embed for widget | | Framer | Use Code Override or HTML embed component | | Squarespace | Code Injection (header) + Code Block | | Wix | Velo custom code or HTML iframe | | Notion Sites | Super.so / Potion — custom code injection | | Docusaurus | Add to scripts in config, use in MDX | | GitBook | Custom HTML blocks | | Hugo / Jekyll / 11ty | Include in templates, auto-init handles the rest | | Shopify | Theme liquid + asset files |

React Example:

import { useEffect, useRef } from 'react';

function AIContext({ content }) {
  const ref = useRef();
  
  useEffect(() => {
    if (ref.current) {
      new CollapseDrop(ref.current, {
        title: 'Ask AI',
        theme: 'dark'
      });
    }
  }, []);
  
  return <div ref={ref}>{content}</div>;
}

Vue Example:

<script setup>
import { onMounted, ref } from 'vue';

const el = ref(null);

onMounted(() => {
  new CollapseDrop(el.value, { title: 'Ask AI' });
});
</script>

<template>
  <div ref="el">Your context here...</div>
</template>

✨ Features

| Feature | Description | |---------|-------------| | Zero Dependencies | Single vanilla JS file, works anywhere | | Auto-Init | Just add data-collapsedrop attribute | | Token Counter | Shows estimated tokens & characters | | Copy Button | One-click copy with visual feedback | | Share Button | Native mobile share or clipboard fallback | | Dark/Light Themes | Built-in themes + full CSS customization | | Multi-Tab Support | Organize content into switchable tabs | | Custom Branding | Add your logo + background images | | Multi-Language | Token estimation for EN, KO, CN, JP | | Accessible | Keyboard navigation, ARIA labels | | Mobile Responsive | Works on all screen sizes | | XSS Protected | All inputs sanitized |


🎨 Customization

Basic Options (Data Attributes)

<div data-collapsedrop
     data-title="Your Title"
     data-subtitle="Your subtitle"
     data-theme="dark"
     data-language="english"
     data-collapsed="false"
     data-show-tokens="true"
     data-show-share="true">
  Your content here...
</div>

Multi-Tab Mode

<div data-collapsedrop data-title="Documentation">
  <div data-tab="Overview">Overview content...</div>
  <div data-tab="Pricing">Pricing content...</div>
  <div data-tab="API">API docs...</div>
</div>

Custom Branding

<div data-collapsedrop
     data-logo="https://yoursite.com/logo.png"
     data-logo-size="40px"
     data-background-image="https://yoursite.com/hero.jpg"
     data-background-overlay="0.85">

Custom Colors

<div data-collapsedrop
     data-color-bg="#1a1025"
     data-color-border="#6b21a8"
     data-color-text="#e9d5ff"
     data-color-title="#c084fc"
     data-color-btn-bg="#9333ea"
     data-color-btn-hover="#7c3aed">

JavaScript API

const widget = CollapseDrop.init('#my-context', {
  title: 'Ask AI',
  subtitle: 'Copy and paste into any LLM',
  theme: 'dark',
  language: 'english',
  collapsed: false,
  showTokens: true,
  showChars: true,
  showShare: true,
  maxHeight: '500px',
  // Branding
  logo: '/images/logo.svg',
  logoSize: '32px',
  backgroundImage: '/images/bg.jpg',
  backgroundOverlay: 0.85,
  // Multi-tab
  tabs: [
    { label: 'Overview', content: '...' },
    { label: 'Pricing', content: '...' }
  ],
  activeTab: 0,
  // Callbacks
  onCopy: (content) => console.log('Copied!'),
  onShare: (content) => console.log('Shared!'),
  onExpand: () => {},
  onCollapse: () => {},
  onTabChange: (index, tab) => {}
});

// Methods
widget.copy();           // Trigger copy
widget.share();          // Trigger share
widget.toggle();         // Toggle collapse
widget.expand();         // Expand
widget.collapse();       // Collapse
widget.setContent(text); // Update content
widget.getContent();     // Get current content
widget.switchTab(1);     // Switch to tab index
widget.destroy();        // Remove widget

🎯 Use Cases

  • Product Landing Pages — Let visitors ask AI about your product
  • Documentation Sites — AI-ready context for complex docs
  • SaaS Apps — Onboarding help without building a chatbot
  • Company FAQs — Support without a support team
  • Open Source Projects — Help users understand your code
  • Personal Portfolios — Let recruiters ask AI about you
  • E-commerce — Product info that AI can actually use

📊 Token Estimation

| Language | Chars/Token | Example | |----------|-------------|---------| | English | ~4 | "Hello world" ≈ 3 tokens | | Korean | ~2 | "안녕하세요" ≈ 3 tokens | | Chinese | ~1.5 | "你好世界" ≈ 3 tokens | | Japanese | ~2 | "こんにちは" ≈ 3 tokens | | Mixed | ~3 | Multilingual content |

Estimates for UI display. Actual tokenization varies by model.


🌐 Browser Support

| Browser | Version | |---------|---------| | Chrome | 66+ | | Firefox | 63+ | | Safari | 13.1+ | | Edge | 79+ |

Graceful fallback for clipboard API on older browsers.


☕ Support the Project

CollapseDrop is 100% free and open source - no paywalls, no premium tiers, no BS.

If it saved you time, helped your project, or you just think it's cool:

| Way to Support | Link | |----------------|------| | ☕ Buy me a coffee | ko-fi.com/collapseindex | | ⭐ Star on GitHub | Hit that star button above! | | 📢 Share it | Tweet it, post it, tell a friend |

Built solo on an 8GB Ideapad 3. Every coffee helps fuel more open source!


� Security

CollapseDrop is built with security in mind:

| Protection | Status | |------------|--------| | XSS Prevention | ✅ All inputs escaped/sanitized | | Runtime Dependencies | ✅ Zero (no supply chain risk) | | External Requests | ✅ None (no tracking, no analytics) | | Data Collection | ✅ None (100% client-side) | | eval() / dangerous patterns | ✅ None |

Audited: January 2026 — All XSS vectors patched

See SECURITY.md for full security policy and vulnerability reporting.


�📄 License

Free to use, modify, and share. Just don't sell it.

  • ✅ Use on any website (commercial or personal)
  • ✅ Modify and customize freely
  • ✅ Include in free/open source projects
  • ❌ Don't sell it or include in paid templates/products

See LICENSE for full details.


🙏 Attribution

Not required, but appreciated:

<!-- Powered by CollapseDrop - https://github.com/collapseindex/collapsedrop -->

Or link to collapseindex.org 💙