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

@llamaindex/ui

v4.7.0

Published

A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications

Readme

@llamaindex/ui

codecov

React component library for LlamaIndex applications. Built with TypeScript, Vite, Tailwind CSS v4, Radix UI, and Storybook. Ships as a shadcn/ui-style library with both full-package and individual component consumption.

Installation

pnpm add @llamaindex/ui
# or
npm install @llamaindex/ui
# or
yarn add @llamaindex/ui

Peer dependencies you should already have in your app:

  • react and react-dom (v18)
  • llama-cloud-services
  • @llamaindex/workflows-client

Tailwind v4 styles

Import the library stylesheet:

/* e.g. src/index.css, app/globals.css */
@import "@llamaindex/ui/styles.css";

Usage

Basic import

import { Button, Card } from "@llamaindex/ui";

export function Example() {
  return (
    <Card className="p-6">
      <Button>Click me</Button>
    </Card>
  );
}

Using API clients via context

Many components and hooks use API clients provided by context. Wrap your app with ApiProvider and pass clients. Then components can access clients via hooks instead of explicit client props.

import {
  ApiProvider,
  createCloudAgentClient,
  cloudApiClient,
  workflowsClient,
} from "@llamaindex/ui/lib";
import { ItemGrid } from "@llamaindex/ui/item-grid";

const clients = {
  agentDataClient: createCloudAgentClient({
    agentUrlId: "your-agent-url-id",
    collection: "your-collection",
  }),
  cloudApiClient,
  workflowsClient,
};

export function App() {
  return (
    <ApiProvider clients={clients}>
      <ItemGrid defaultPageSize={20} />
    </ApiProvider>
  );
}

PDF viewer assets

PdfPreview, FilePreview and DocumentPreview render PDFs with react-pdf, which needs a pdf.js worker at runtime. The library resolves it from the pdfjs-dist package installed alongside it, so your bundler emits it as a same-origin asset — nothing is loaded from a public CDN. The worker runs with your page's privileges, so serve it from an origin you control and keep your CSP script-src/worker-src limited to 'self'.

Two optional asset sets are not enabled by default, because they are directories that bundlers cannot resolve automatically:

  • cmaps/ — required to render PDFs that use CID-keyed fonts (typically CJK documents). Without it those glyphs come out blank.
  • wasm/ — required to decode JPEG 2000 (JPX) images.

To enable them, copy the directories out of pdfjs-dist into your static assets at build time and point the library at them once during start-up:

import { configurePdfjs } from "@llamaindex/ui/file-preview";

configurePdfjs({
  cMapUrl: "/pdfjs/cmaps/",
  wasmUrl: "/pdfjs/wasm/",
});
// package.json — copy the assets as part of your build
"scripts": {
  "prebuild": "cp -R node_modules/pdfjs-dist/cmaps node_modules/pdfjs-dist/wasm public/pdfjs/"
}

configurePdfjs also accepts workerSrc. Pass it if your bundler does not rewrite new URL("pdfjs-dist/build/pdf.worker.min.mjs", import.meta.url) inside dependencies; with Vite, for example, import workerSrc from "pdfjs-dist/build/pdf.worker.min.mjs?url" gives you a URL to hand over. When the worker cannot be loaded at all, pdf.js falls back to rendering on the main thread: slower, but still same-origin.

Contributing

Please read the contribution guide: CONTRIBUTING.md