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

@justbookme.ai/chat-widget

v1.4.0

Published

A customizable Vue 3 chat widget designed for scheduling meetings through Calendly integration. This widget provides a seamless chat experience with a built-in scheduling flow.

Readme

JustBookMe.ai Chat Widget

A customizable Vue 3 chat widget designed for scheduling meetings through Calendly integration. This widget provides a seamless chat experience with a built-in scheduling flow.

![JustBookMe.ai Chat Widget]

Features

  • 💬 Interactive Chat Interface: Clean, modern UI for user interactions
  • 📅 Calendly Integration: Seamless scheduling experience
  • 🔔 Attention-Grabbing Bubble: Customizable chat bubble to prompt user engagement
  • 🌓 Theming Support: Light and dark mode compatibility
  • 📱 Responsive Design: Works on all device sizes
  • 💾 Persistent Chat History: Conversations are saved in localStorage
  • 🔄 Error Handling: Graceful error recovery with retry options
  • 🔌 Easy Integration: Simple to add to any website

Installation

NPM

npm install @justbookme.ai/chat-widget

CDN

<link rel="stylesheet" href="https://unpkg.com/@justbookme.ai/chat-widget/dist/chat-widget.css">
<script src="https://unpkg.com/@justbookme.ai/chat-widget/dist/chat-widget.umd.js"></script>

Usage

Basic Setup

Add the widget to your HTML:

<!-- Add container for the widget -->
<div id="chat-widget"></div>

<!-- Add Vue first (if not already in your project) -->
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>

<!-- Add Chat Widget -->
<link rel="stylesheet" href="https://unpkg.com/@justbookme.ai/chat-widget/dist/chat-widget.css">
<script src="https://unpkg.com/@justbookme.ai/chat-widget/dist/chat-widget.umd.js"></script>

<script>
  document.addEventListener('DOMContentLoaded', function() {
    window.ChatWidgetConfig = {
      apiKey: "YOUR_API_KEY",
      apiUrl: "YOUR_API_URL",
      bubbleText: "Need to schedule a meeting? Click here!"
    };

    window.ChatWidget.initChatWidget(window.ChatWidgetConfig);
  });
</script>

Vue Application Integration

import { createApp } from 'vue'
import { initChatWidget } from '@justbookme.ai/chat-widget'
import '@justbookme.ai/chat-widget/style'

// Initialize the widget
initChatWidget({
  apiKey: "YOUR_API_KEY",
  apiUrl: "YOUR_API_URL",
  target: "#chat-widget-container", // Optional: defaults to #chat-widget
  bubbleText: "Need to schedule a meeting? Click here!" // Optional
})

Configuration Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | apiKey | String | Required | Your API key for authentication | | apiUrl | String | Required | The URL of your backend API | | target | String | #chat-widget | CSS selector for the container element | | bubbleText | String | Need to schedule a meeting? Click here to chat! | Text displayed in the attention bubble | | theme | String | light | Theme of the widget (light or dark) | | position | String | bottom-right | Position of the widget (bottom-right or bottom-left) | | colors | Object | {} | Custom color overrides (see below) |

Custom Colors

You can customize the colors of different elements:

window.ChatWidgetConfig = {
  // ... other options
  colors: {
    userMessage: {
      background: "#4F46E5",
      text: "#FFFFFF"
    },
    botMessage: {
      background: "#F3F4F6",
      text: "#1F2937"
    },
    errorMessage: {
      background: "#FEE2E2",
      text: "#B91C1C"
    }
  }
};

API Requirements

The widget expects your backend API to provide the following endpoints:

  1. User Info Endpoint: Returns Calendly scheduling information

    • Default path: ${apiUrl}/user-info
    • Expected response: { scheduling_url: string, name?: string, ... }
  2. Message Endpoint: Handles chat messages

    • Default path: ${apiUrl}/message
    • Request payload: { message: string, days_range: number, chat_history: Message[], is_current_message: boolean }
    • Expected response: { message: string, status: 'success' | 'error', book: boolean }

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

Development

# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

License

MIT License

Credits

Developed by JustBookMe.ai