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

lumina-slides

v9.1.2

Published

The interface layer for the agentic era. Turn text to UI with declarative JSON.

Readme

Lumina Engine

Version Downloads License: MIT TypeScript

🤖 Build with AI Instantly

Lumina Slides Agent

Need a presentation fast? The Lumina Slides Agent builds full slide decks from your prompts and shares live preview links in seconds.


🎨 Layouts & Gallery

Lumina includes 7 built-in layouts ready to use. Just set the type property in your JSON:

| Layout | Description | Visual Preview | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Statement | Bold title slides for introductions, transitions, or key messages. Supports title, subtitle, and background. type: "statement" | Statement | | Features | Auto-grid layout for showcasing features, benefits, or stats. Adapts columns based on item count. type: "features" | Features | | Timeline | Horizontal timeline with snap navigation. Great for roadmaps, history, or process flows. type: "timeline" | Timeline | | Steps | Numbered step-by-step guide. Perfect for tutorials, instructions, or procedures. type: "steps" | Steps | | Half | Split layout with image on one side, content on the other. Fully responsive. type: "half" | Half | | Chart | Data visualization with Chart.js. Supports bar, line, pie, and doughnut charts. type: "chart" ⚠️ Requires chart.js | Chart | | Flex | Declarative auto-layout system. Define structure with rows, columns, and nested containers. type: "flex" | Flex |

[!TIP] > Embedded Mode: All layouts can be rendered in compact containers (dashboards, widgets) by using the compact: true option.

[!TIP] > See the Code: Click on the dropdowns below to see the exact JSON used to generate these slides.


🖼️ Studio

Build decks visually with the built-in Studio: edit slides in the inspector, tweak content and styles, then export or copy the JSON. Ideal for prototyping and editing AI-generated decks.

How to use Studio

Install the package, mount Lumina with Studio enabled on a DOM node, and optionally pass an initialDeck. Listen for the save event to get the edited deck when the user saves.

npm install lumina-slides
import { Lumina } from "lumina-slides";
import "lumina-slides/style.css";

const initialDeck = {
  meta: { title: "My Presentation" },
  slides: [
    { type: "statement", title: "Welcome", subtitle: "Edit in Studio." },
    {
      type: "features",
      title: "Features",
      features: [
        { title: "One", description: "First feature" },
        { title: "Two", description: "Second feature" },
      ],
    },
  ],
};

const engine = new Lumina("#app", {
  studioEmbed: true,
  initialDeck, // omit to start from an empty deck
});

engine.on("save", (deck) => {
  // Persist to your backend, download as JSON, or load elsewhere
  console.log("Deck saved:", deck);
});

| Option | Description | | :----- | :---------- | | studioEmbed: true | Renders the Studio UI (inspector, toolbar) next to the deck. | | initialDeck | Optional. Deck object { meta, slides } to load on init. Omit for an empty deck. |

When the user clicks Save in Studio, Lumina emits save with the full deck object.

[!TIP] Try Studio online: Run the docs app with Studio enabled or open the Studio route to use the visual editor in the browser.


{
  "type": "timeline",
  "title": "Project History",
  "timeline": [
    {
      "date": "2023",
      "title": "Inception",
      "description": "The idea is born."
    },
    {
      "date": "2024",
      "title": "Launch",
      "description": "First public release."
    }
  ]
}
{
  "type": "chart",
  "chartType": "bar",
  "title": "Quarterly Revenue",
  "data": {
    "labels": ["Q1", "Q2", "Q3", "Q4"],
    "datasets": [
      { "label": "Revenue", "values": [120, 150, 180, 220], "color": "c:p" }
    ]
  }
}

🎭 Theming

Lumina includes 6 beautiful theme presets out-of-the-box. Just pass the name:

const engine = new Lumina("#app", { theme: "ocean" });

| Theme | Description | Preview | | :----------- | :---------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | | default | Clean blue on dark. Professional. | default | | ocean | Cyan on slate. Calm and focused. | ocean | | midnight | Indigo on black. Bold and dramatic. | midnight | | forest | Emerald greens. Natural and fresh. | forest | | cyber | Neon pink. Sci-fi futuristic. | cyber | | latte | Light mode. Warm amber on cream. | latte |


⚡ Quick Start

1. Install

# Core installation
npm install lumina-slides

# With Chart support (optional - only if using chart slides)
npm install lumina-slides chart.js

2. Implementation

Lumina is a Framework Agnostic class. It mounts to any DOM node.

import { Lumina } from "lumina-slides";
import "lumina-slides/style.css";

const engine = new Lumina("#app", {
  theme: "dark",
  loop: true,
});

// Load Data (From your API, or static)
engine.load({
  meta: { title: "Demo Deck" },
  slides: [
    { type: "statement", title: "Hello World", subtitle: "Powered by Lumina" },
  ],
});

🤖 Building Agents?

We have a dedicated guide for that.

[!IMPORTANT] > Read the Agent Integration Guide

Learn about:

  • Streaming: How to pipe token streams directly into the engine.
  • Aliases: Improve latency by 30% using t instead of title.
  • Feedback Loops: How to let the AI know what the user is clicking.

Token Optimization

Lumina includes a built-in normalizer. Your LLM can output "lazy" JSON to save money.

| Concept | Standard | Short Alias | | :------------- | :----------- | :---------- | | Header | title | t | | Sub-Header | subtitle | s | | Picture | image | img | | Background | background | bg |


📚 Documentation & Resources

| Resource | Description | | :------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------- | | 📖 Full Documentation | Complete guides, examples, and live playground | | 🔧 API Reference | TypeDoc-generated API docs with all methods and types | | 🤖 Agent Integration Guide | How to integrate Lumina with AI agents (OpenAI, Anthropic, etc.) | | 📝 LLM System Prompt | Ready-to-use system prompt for your AI to generate slides | | 🤖 Custom GPT Agent | Specialized ChatGPT agent to build and preview slides instantly | | 🎮 Live Playground | Try Lumina in your browser with live JSON editing | | 🖼️ Studio | Visual page builder: edit slides in the inspector and export JSON |